亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript解析ajax返回的xml和json格式數據實例詳解

2019-11-19 18:07:56
字體:
來源:轉載
供稿:網友

本文實例講述了javascript解析ajax返回的xml和json格式數據。分享給大家供大家參考,具體如下:

寫個例子,以備后用

一、JavaScript 解析返回的xml格式的數據:

1、javascript版本的ajax發送請求

(1)、創建XMLHttpRequest對象,這個對象就是ajax請求的核心,是ajax請求和響應的信息載體,單是不同瀏覽器創建方式不同
(2)、請求路徑
(3)、使用open方法綁定發送請求
(4)、使用send() 方法發送請求
(5)、獲取服務器返回的字符串   xmlhttpRequest.responseText;
(6)、獲取服務端返回的值,以xml對象的形式存儲  xmlhttpRequest.responseXML;
(7)、使用W3C DOM節點樹方法和屬性對該XML文檔對象進行檢查和解析。

2、 實例:

(1)、發送ajax請求,以及解析返回的數據

<script type="text/javascript">/* js版本發送ajax請求 */function tellxml(){ // 創建對象,適合于firefox 和safari var xmlhttpRequest= new XMLHttpRequest(); // 創建對象,適合于ie // var xmlhttpRequest=new ActiveXObject("Msxml2.XMLHTTP"); // 請求發送路徑 url var url="http://localhost:18080/servlet/Servlet1?aa=10"; // Open方法綁定一個發送過程,但不發送數據。Open方法最后一個參數為true時表示異步,否則同步 xmlhttpRequest.open("POST",url,true); // Send方法就是發送請求數據 xmlhttpRequest.send(url); // readstate 就是一個xmlhttprequest 對象的一個屬性,來記錄服務器返回的狀態 var readstate =xmlhttpRequest.readyState; alert("狀態:"+readstate); // status 就是發送請求的狀態,如果是200 則說明請求響應成功 var status=xmlhttpRequest.status; alert("請求發送結果"+status); // "responseText”是xmlhttpRequest的一個屬性,來以字符串形式存儲HTTP響應值;“responseXML”屬性是以XML形式來記錄HTTP響應的值。 var text= xmlhttpRequest.responseText; alert(text); // “responseXML”是xmlhttpRequest的一個屬性,是以XML文檔的對象來存儲服務器端返回的值,可以使用W3C DOM節點樹方法和屬性對該XML文檔對象進行檢查和解析。 var xml= xmlhttpRequest.responseXML; var values=xml.getElementsByTagName("info"); alert("值"+values); alert("長度"+values.length); // 解析獲取內容 for(var i=0;i<values.length;i++){ var name1=values[i].getElementsByTagName("name")[0].firstChild.data; alert(name1); }};</script>

(2)、servlet 接受ajax 請求:

@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String aaa= request.getParameter("aa"); System.out.print("ajax 數據:"+aaa); // 向客戶端響應信息 response.setCharacterEncoding("GBK"); response.setContentType("text/xml"); PrintWriter out= response.getWriter(); out.print("<?xml version=/"1.0/" encoding=/"GBK/"?>"); out.println("<infos>"); out.println("<info>"); out.println("<name>"+"name1"+"</name>"); out.println("<age>"+12+"</age>"); out.println("<name>"+"name2"+"</name>"); out.println("<age>"+22+"</age>"); out.println("</info>"); out.println("<info>"); out.println("<name>"+"name11"+"</name>"); out.println("<age>"+112+"</age>"); out.println("<name>"+"name22"+"</name>"); out.println("<age>"+222+"</age>"); out.println("</info>"); out.println("</infos>");}

二、JavaScript 解析返回的json格式的數據:注意這里獲取的是responseText 而不是responseXML也就是字符串而不是xml對象,因為返回的是json

1、發送請求,并解析返回的json格式的數據(這里返回的是json 對象的格式)

<script type="text/javascript">/* js 解析返回的格式為 json */function telljson(){ // 創建 xmlhttpRequest 對象 var xmlhttpRequest= new XMLHttpRequest(); //請求URL var url="http://localhost:18080/servlet/Servlet3?aa=10"; // 將請求過程綁定到 open 方法 xmlhttpRequest.open("POST",url,true); // 發送請求 xmlhttpRequest.send(url); // readstate 就是一個xmlhttprequest 對象的一個屬性用來記錄服務端響應的狀態 var readstate =xmlhttpRequest.readyState; alert("請求準備狀態:"+readstate); // status 服務器執行的狀態 var status=xmlhttpRequest.status; alert("請求發送結果"+status); // responseText 對象為xmlhttpRequest 對象的一個屬性,用來以字符串的方式存儲服務器端返回的值。 var text= xmlhttpRequest.responseText; alert("json text: "+text); // 獲取json 返回值 // 那邊傳的是json對象的格式的一個字符串,在前臺首先將字符串轉化為一個json格式的js對象 var json= eval("("+text+")"); // 通過eval() 方法將json格式的字符串轉化為js對象,并進行解析獲取內容 alert("age:"+json.age+"age1:"+json.age1);};</script>

2、servlet 接受請求,并返回數據

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 向ajax 返回json格式的數據  String aaa= request.getParameter("aa");  System.out.print("ajax 數據:"+aaa);  // 向客戶端響應信息  response.setCharacterEncoding("GBK");  response.setContentType("text/json");  PrintWriter out= response.getWriter();  // 這里組裝json對象的格式,并轉化為json格式的字符串返回。  String stu="{age:12,age1:23,age2:33}";  out.print(stu);  out.flush();  out.close();}

三、JavaScript 解析返回的json數組格式的數據:

1、發送ajax請求

<script type="text/javascript">/* js 解析返回的格式為 json */function telljson(){ // 創建xmlhttpRequest對象 var xmlhttpRequest= new XMLHttpRequest(); //請求url var url="http://localhost:18080/servlet/Servlet3?aa=10"; // open 方法綁定請求路徑 xmlhttpRequest.open("POST",url,true); // 發送ajax請求 xmlhttpRequest.send(url); // readstate 就是一個xmlhttprequest 對象的一個屬性用來記錄服務器返回的狀態信息 var readstate =xmlhttpRequest.readyState; alert("請求準備狀態:"+readstate); // status 屬性用來記錄服務器返回的執行狀態信息 var status=xmlhttpRequest.status; alert("請求發送結果"+status); // responseText屬性用來以字符串方式存儲服務器端返回的數據 var text= xmlhttpRequest.responseText; alert("json text: "+text); // 那邊傳的是json數組的格式,通過js的eval() 方法將json數組格式的字符串轉化為js數組 var json= eval("("+text+")"); // 解析這個js數組,獲取數值 var age=json[0].age; var age1=json[0].age1; var age2=json[0].age2; alert("age:"+age+"age1"+age1+"age2"+age2);};</script>

四、ajax  XMLHttpRequest 對象的三個屬性以及open 和send方法:

(1)onreadystatechange 屬性

onreadystatechange 屬性存有處理服務器響應的函數。下面的代碼定義一個空的函數,可同時對 onreadystatechange 屬性進行設置:

xmlHttp.onreadystatechange=function(){// 我們需要在這里寫一些代碼}

(2)readyState 屬性

readyState 屬性存有服務器響應的狀態信息。每當 readyState 改變時,onreadystatechange 函數就會被執行。

這是 readyState 屬性可能的值:

狀態 描述
0 請求未初始化(在調用 open() 之前)
1 請求已提出(調用 send() 之前)
2 請求已發送(這里通??梢詮捻憫玫絻热蓊^部)
3 請求處理中(響應中通常有部分數據可用,但是服務器還沒有完成響應)
4 請求已完成(可以訪問服務器響應并使用它)

xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4) { // 從服務器的response獲得數據 }}

(3)responseText 屬性

可以通過 responseText 屬性來取回由服務器返回的數據。

在我們的代碼中,我們將把時間文本框的值設置為等于 responseText:

xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4) { document.myForm.time.value=xmlHttp.responseText; }}

另外:

AJAX - 向服務器發送一個請求

要想把請求發送到服務器,我們就需要使用 open() 方法和 send() 方法。

open() 方法需要三個參數:

第一個參數定義發送請求所使用的方法(GET 還是 POST)。

與 POST 相比,GET 更簡單也更快,并且在大部分情況下都能用。

然而,在以下情況中,請使用 POST 請求:

① 無法使用緩存文件(更新服務器上的文件或數據庫)
② 向服務器發送大量數據(POST 沒有數據量限制)
③ 發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠

第二個參數規定服務器端腳本的 URL(該文件可以是任何類型的文件,比如 .txt 和 .xml,或者服務器腳本文件,比如 .asp 和 .php (在傳回響應之前,能夠在服務器上執行任務))。

第三個參數規定應當對請求進行異步地處理(true(異步)或 false(同步))。

send() 方法可將請求送往服務器。如果我們假設 HTML 文件和 ASP 文件位于相同的目錄,那么代碼是這樣的:

xmlHttp.open("GET","time.asp",true);xmlHttp.send(null);

五、之前的實例都沒有使用 XMLHttpRequest 對象的onreadystatechange 這個屬性,下面看看這個屬性的實例:

1、onreadystatechange  這個屬性在前面也說了,就是在XMLHttpRequest 這個對象的 readyState  這個值改變的時候會執行。

2、發送ajax請求并解析

<script type="text/javascript">/* js 解析返回的格式為 json */function telljson(){ // 創建對象,適合于firefox 和safari var xmlhttpRequest= new XMLHttpRequest(); //請求發送路徑 url var url="http://localhost:18080/servlet/Servlet3?aa=10"; // Open方法綁定一個發送過程,但不發送數據。Open方法最后一個參數為true時表示異步,否則同步 xmlhttpRequest.open("POST",url,true); // Send方法就是發送請求數據 xmlhttpRequest.send(url); //onreadystatechange 屬性存有處理服務器響應的函數 xmlhttpRequest.onreadystatechange =function(){ //readyState 屬性存有服務器響應的狀態信息。每當 readyState 改變時,onreadystatechange 函數就會被執行。  alert("狀態改變了:"+xmlhttpRequest.readyState);  // 如果是4 請求已完成(可以訪問服務器響應并使用它)  if(xmlhttpRequest.readyState==4){  var readstate =xmlhttpRequest.readyState;  alert("請求準備狀態:"+readstate);  var status=xmlhttpRequest.status;  alert("請求發送結果"+status);  // "responseText”是xmlhttpRequest的一個屬性,來以字符串形式存儲HTTP響應值;“responseXML”屬性是以XML形式來記錄HTTP響應的值。  var text= xmlhttpRequest.responseText;  alert("json text: "+text);  // 獲取json 返回值  // 那邊傳的是json數組的格式,這邊解析后就是一個json數組  var json= eval("("+text+")");  var age=json[0].age;  var age1=json[0].age1;  var age2=json[0].age2;  alert("age:"+age+"age1"+age1+"age2"+age2);  } }};</script>

3、servlet返回的數據

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { // 向ajax 返回json格式的數據 String aaa = request.getParameter("aa"); System.out.print("ajax 數據:" + aaa); // 向客戶端響應信息 response.setCharacterEncoding("GBK"); response.setContentType("text/json"); PrintWriter out = response.getWriter(); // 這里使用 json 數組的格式 String stu = "[{age:12,age1:23,age2:33}]"; out.print(stu); out.flush(); out.close();}

PS:這里再為大家提供幾款關于xml與json操作的在線工具供大家參考使用:

在線XML/JSON互相轉換工具:
http://tools.VeVB.COm/code/xmljson

在線格式化XML/在線壓縮XML
http://tools.VeVB.COm/code/xmlformat

XML在線壓縮/格式化工具:
http://tools.VeVB.COm/code/xml_format_compress

在線JSON代碼檢驗、檢驗、美化、格式化工具:
http://tools.VeVB.COm/code/json

JSON在線格式化工具:
http://tools.VeVB.COm/code/jsonformat

在線json壓縮/轉義工具:
http://tools.VeVB.COm/code/json_yasuo_trans

更多關于JavaScript相關內容可查看本站專題:《JavaScript中ajax操作技巧總結》、《JavaScript操作XML文件技巧總結》、《JavaScript中json操作技巧總結》、《JavaScript錯誤與調試技巧總結》及《JavaScript數據結構與算法技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜免费日韩视频| 欧美自拍大量在线观看| 国产亚洲激情在线| 精品国产乱码久久久久久天美| 日韩高清电影免费观看完整| 日韩精品视频在线观看网址| 欧美日韩aaaa| 亚洲影视九九影院在线观看| 不卡毛片在线看| 色综合影院在线| 国产日韩在线一区| 欧美日韩另类在线| 综合欧美国产视频二区| 国产一区二区欧美日韩| 77777少妇光屁股久久一区| 尤物yw午夜国产精品视频| 国产精品视频免费观看www| 国产精品青青在线观看爽香蕉| 国产视频精品在线| 97视频色精品| 精品电影在线观看| 精品香蕉在线观看视频一| 久久视频国产精品免费视频在线| 69久久夜色精品国产69| 欧美日韩一区二区免费在线观看| 欧美又大又硬又粗bbbbb| 九九久久久久99精品| 国产精品成人免费视频| 国产精品视频久久久久| 欧美激情成人在线视频| 国产精品日韩在线观看| 久久香蕉精品香蕉| 欧美视频二区36p| 欧美色欧美亚洲高清在线视频| 久久久91精品国产一区不卡| 亚洲精品小视频在线观看| 久久av.com| 热久久这里只有| 久久精品久久久久久| 欧美精品在线视频观看| 91精品视频免费观看| 亚洲缚视频在线观看| 亚洲欧美福利视频| 亚洲欧美日韩久久久久久| 欧美激情综合色| 国产欧美精品一区二区三区介绍| 欧美xxxx做受欧美.88| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲欧美精品在线| 国产精品成人av在线| 国产精品美女在线| 亚洲欧美精品伊人久久| 久久久女人电视剧免费播放下载| 91在线观看欧美日韩| 青青草原一区二区| 日韩在线高清视频| 亚洲天堂精品在线| 国产精品美女久久久久av超清| 亚洲美女激情视频| 亚洲福利视频网站| 色综合亚洲精品激情狠狠| 538国产精品一区二区在线| 久久深夜福利免费观看| 国产成人精品国内自产拍免费看| 综合激情国产一区| 成人黄色影片在线| 久久精品最新地址| 亚洲精品成人免费| 中文欧美日本在线资源| 国产精品黄色av| 亚洲一区美女视频在线观看免费| 91精品国产99久久久久久| 亚洲精品久久久久久久久久久久| 日韩综合中文字幕| 91sa在线看| 欧美午夜激情在线| 国产成人精品电影久久久| 91精品国产乱码久久久久久蜜臀| 美女性感视频久久久| 在线播放日韩专区| 国产精品视频一区二区三区四| 黑人巨大精品欧美一区免费视频| 久久久国产精品免费| 亚洲精品在线不卡| 一区二区中文字幕| 欧美人与物videos| 久久久av电影| 国产中文字幕91| 欧美一区第一页| 国产精品盗摄久久久| 国产精品日韩精品| 亚洲综合中文字幕在线观看| 亚洲综合色av| 欧美做爰性生交视频| 中文字幕日韩欧美在线| 欧美国产一区二区三区| 96精品久久久久中文字幕| 久久久中精品2020中文| 亚洲综合第一页| 国产精品最新在线观看| 亚洲一区二区少妇| 亚洲精品按摩视频| 久久夜色精品国产| 日韩精品免费一线在线观看| 亚洲一区二区免费| 国产精品一区二区三区久久久| 日韩免费看的电影电视剧大全| 欧美精品在线第一页| 国产精品伦子伦免费视频| 久久精品福利视频| 国产精品自产拍在线观| 亚洲视频在线免费观看| 国产精品久久久久久超碰| 亚洲人成电影网站色xx| 日韩成人久久久| 日本成人在线视频网址| 这里只有精品在线观看| 亚洲精品电影网在线观看| 亚洲欧洲黄色网| 欧美激情视频一区二区三区不卡| 国产精品啪视频| 精品久久久久久久久久久| 国外成人免费在线播放| 97视频在线观看免费高清完整版在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 日韩精品日韩在线观看| 日韩精品在线视频| 茄子视频成人在线| 国产亚洲欧美视频| 亚洲一区制服诱惑| 久久精品99久久香蕉国产色戒| 人人做人人澡人人爽欧美| 欧美黄色性视频| 欧美猛男性生活免费| 日本aⅴ大伊香蕉精品视频| 国产一区二区三区视频| 欧美激情免费视频| 一区二区三区美女xx视频| 欧美电影免费观看电视剧大全| 91精品国产91久久久久久| 538国产精品一区二区免费视频| 欧美大奶子在线| 日韩高清电影免费观看完整版| 欧美视频免费在线| 精品国产户外野外| 久久精品国产精品| 欧美做受高潮电影o| 国产精品午夜国产小视频| 精品国产精品自拍| 日韩电影第一页| 国产在线观看精品| 国产成人一区二区在线| 亚洲精品国产精品久久清纯直播| 国产成人精品一区| 日韩在线免费av| 亚洲欧美综合精品久久成人| 欧美视频13p| 在线播放国产一区中文字幕剧情欧美| 国产精品永久免费| 欧美性猛交xxxx| 色悠久久久久综合先锋影音下载| xxav国产精品美女主播| 最新的欧美黄色| 国产日本欧美一区|