Servlet返回的數(shù)據(jù)js解析2種方法
這篇文章主要介紹了Servlet返回的數(shù)據(jù)js解析2種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
方式1:Json
接收函數(shù):ajax.responseText后面沒括號(hào)
其實(shí)在之前所說的ajax中還遺留了一些問題就是,Servlet返回給js的數(shù)據(jù)是如何被js解析的呢?
之前只是發(fā)送了一句話,所以他就以html的格式進(jìn)行解析就成功了,但是在實(shí)際中我們往往發(fā)送的數(shù)據(jù)是存在一個(gè)對(duì)象當(dāng)中的又或者是一組對(duì)象當(dāng)中的,我們應(yīng)該如何發(fā)送呢?
json:js當(dāng)中有一種有一種結(jié)構(gòu)就是json,說白了就是鍵值對(duì)。
例如下面的:
{ "firstName":"John" , "lastName":"Doe" }
我們可以在Servlet將屬性與值進(jìn)行拼接,得到j(luò)son格式的字符串,這樣js中就能以這樣的格式進(jìn)行數(shù)據(jù)的解析了。
類似于下面這樣:
resp.getWriter().write("{name:"+u.getHeroName()+
",lifenum:"+u.getLifeNum()+
",type:"+u.getType()+
",desc:"+u.getDesc()
+"}")
但是對(duì)于懶癌來說這樣的方式是極不友好的,所以就要說到強(qiáng)大的jar包了。
有一款名為gson的jar包可以幫你完成拼接的工作
對(duì)于使用就是你直接將對(duì)象丟進(jìn)去就好,它會(huì)自動(dòng)幫你轉(zhuǎn)為json格式。
然后又有問題來了,json的數(shù)據(jù)給js有什么用,我們一般操縱的是對(duì)象呀!
別慌,eval幫你解決

方式2:XML進(jìn)行解析
接收函數(shù):ajax.responseXML后面沒括號(hào)
可以將用戶數(shù)據(jù)以Xml進(jìn)行發(fā)送然后js也以xml格式解析
用戶數(shù)據(jù)的xml可以寫在jsp中,然后js的跳轉(zhuǎn)(open函數(shù))就不用跳轉(zhuǎn)到Servlet中而是jsp中找用戶數(shù)據(jù)
用戶數(shù)據(jù)jsp:
<%@ page language="java" contentType="text/xml; charset=utf-8"%> <user> <name>李四</name> <pwd>123</pwd> </user>
ajax接收數(shù)據(jù)jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
function getXML(){
//創(chuàng)建ajax引擎對(duì)象
var ajax;
if(window.XMLHttpRequest){//火狐
ajax=new XMLHttpRequest();
}else if(window.ActiveXObject){//ie
ajax=new ActiveXObject("Msxml2.XMLHTTP");
}
//復(fù)寫onreadystatechange
ajax.onreadystatechange=function(){
//判斷Ajax狀態(tài)嗎
if(ajax.readyState==4){
//判斷響應(yīng)狀態(tài)嗎
if(ajax.status==200){
//獲取響應(yīng)內(nèi)容
var doc=ajax.responseXML;
//處理響應(yīng)內(nèi)容
//獲取元素對(duì)象
alert(doc.getElementsByTagName("name")[0].innerHTML);
}
}
}
//發(fā)送請(qǐng)求
ajax.open("get","xml.jsp",true);
ajax.send(null);
}
</script>
</head>
<body>
<h3>XML數(shù)據(jù)格式學(xué)習(xí)</h3>
<hr>
<input type="button" value="測(cè)試XML" onclick="getXML()" />
</body>
</html>
但是這種方式?jīng)]有json好,所以推薦用json方式進(jìn)行進(jìn)行解析會(huì)更好一點(diǎn)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 使用easyui從servlet傳遞json數(shù)據(jù)到前端頁面的兩種方法
- jsp+servlet實(shí)現(xiàn)猜數(shù)字游戲
- servlet+jsp實(shí)現(xiàn)過濾器 防止用戶未登錄訪問
- Jsp servlet驗(yàn)證碼工具類分享
- javascript與jsp發(fā)送請(qǐng)求到servlet的幾種方式實(shí)例
- jsp頁面中獲取servlet請(qǐng)求中的參數(shù)的辦法詳解
- Jsp+Servlet實(shí)現(xiàn)文件上傳下載 刪除上傳文件(三)
- Jsp+Servlet實(shí)現(xiàn)文件上傳下載 文件上傳(一)
- Java,JSP,Servlet獲取當(dāng)前工程路徑(絕對(duì)路徑)問題解析
相關(guān)文章
不提示直接關(guān)閉網(wǎng)頁窗口的JS示例代碼
本篇文章主要是對(duì)不提示直接關(guān)閉網(wǎng)頁窗口的JS示例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12
JS button按鈕實(shí)現(xiàn)submit按鈕提交效果
今天在使用表單是同時(shí)使用POST更新、刪除操作。然而form表單的 submit 且一旦提交則全部提交,所以想到的實(shí)現(xiàn)方法就是 使用button實(shí)現(xiàn),怎么實(shí)現(xiàn)呢?下面小編給大家分享JS button按鈕實(shí)現(xiàn)submit按鈕提交效果,感興趣的朋友參考下吧2016-11-11
JavaScript驗(yàn)證圖片類型(擴(kuò)展名)的函數(shù)分享
這篇文章主要介紹了JavaScript驗(yàn)證圖片類型的函數(shù)分享,需要的朋友可以參考下2014-05-05
javascript實(shí)現(xiàn)的簡(jiǎn)單計(jì)時(shí)器
計(jì)時(shí)器提供了一 個(gè)可以將代碼片段異步延時(shí)執(zhí)行的能力,javascript生來是單線程的(在一定時(shí)間范圍內(nèi)僅一部分js代碼能運(yùn)行),計(jì)時(shí)器為我們提供了一種避開這種 限制的方法,從而開辟了另一條執(zhí)行代碼的蹊徑。2015-07-07
微信小程序BindTap快速連續(xù)點(diǎn)擊目標(biāo)頁面跳轉(zhuǎn)多次問題處理
這篇文章主要介紹了微信小程序BindTap快速連續(xù)點(diǎn)擊目標(biāo)頁面跳轉(zhuǎn)多次問題處理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04

