AJAX對(duì)服務(wù)器返回XML的處理方法
來源:易賢網(wǎng) 閱讀:1224 次 日期:2015-04-29 15:17:51
溫馨提示:易賢網(wǎng)小編為您整理了“AJAX對(duì)服務(wù)器返回XML的處理方法”,方便廣大網(wǎng)友查閱!

本文實(shí)例講述了AJAX對(duì)服務(wù)器返回XML的處理方法。分享給大家供大家參考。具體分析如下:

在AJAX 中,服務(wù)器端如果返回的XML 文檔,則可以通過異步對(duì)象的responseXML 屬性來獲取器XML 數(shù)據(jù)。而開發(fā)者可以利用DOM 的相關(guān)方法對(duì)其進(jìn)行處理。

假設(shè)服務(wù)器返回的XML 文檔,如下所示:

<?xml version="1.0" encoding="gb2312"?> <list> <caption>Member List</caption> <member> <name>isaac</name> <class>W13</class> <birth>Jun 24th</birth> <constell>Cancer</constell> <mobile>1118159</mobile> </member> <member> <name>fresheggs</name> <class>W610</class> <birth>Nov 5th</birth> <constell>Scorpio</constell> <mobile>1038818</mobile> </member> <member> <name>girlwing</name> <class>W210</class> <birth>Sep 16th</birth> <constell>Virgo</constell> <mobile>1307994</mobile> </member> <member> <name>tastestory</name> <class>W15</class> <birth>Nov 29th</birth> <constell>Sagittarius</constell> <mobile>1095245</mobile> </member> <member> <name>lovehate</name> <class>W47</class> <birth>Sep 5th</birth> <constell>Virgo</constell> <mobile>6098017</mobile> </member> <member> <name>slepox</name> <class>W19</class> <birth>Nov 18th</birth> <constell>Scorpio</constell> <mobile>0658635</mobile> </member> <member> <name>smartlau</name> <class>W19</class> <birth>Dec 30th</birth> <constell>Capricorn</constell> <mobile>0006621</mobile> </member> <member> <name>tuonene</name> <class>W210</class> <birth>Nov 26th</birth> <constell>Sagittarius</constell> <mobile>0091704</mobile> </member> <member> <name>dovecho</name> <class>W19</class> <birth>Dec 9th</birth> <constell>Sagittarius</constell> <mobile>1892013</mobile> </member> <member> <name>shanghen</name> <class>W42</class> <birth>May 24th</birth> <constell>Gemini</constell> <mobile>1544254</mobile> </member> <member> <name>venessawj</name> <class>W45</class> <birth>Apr 1st</birth> <constell>Aries</constell> <mobile>1523753</mobile> </member> <member> <name>lightyear</name> <class>W311</class> <birth>Mar 23th</birth> <constell>Aries</constell> <mobile>1002908</mobile> </member> </list>

客戶端獲得服務(wù)器端的該XML 數(shù)據(jù),并將其顯示在表格中。代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""> <html> <head> <title>responseXML</title> <style> <!-- .datalist{ border:1px solid #744011; /* 表格邊框 */ font-family:Arial; border-collapse:collapse; /* 邊框重疊 */ background-color:#ffd2aa; /* 表格背景色 */ font-size:14px; } .datalist th{ border:1px solid #744011; /* 行名稱邊框 */ background-color:#a16128; /* 行名稱背景色 */ color:#FFFFFF; /* 行名稱顏色 */ font-weight:bold; padding-top:4px; padding-bottom:4px; padding-left:12px; padding-right:12px; text-align:center; } .datalist td{ border:1px solid #744011; /* 單元格邊框 */ text-align:left; padding-top:4px; padding-bottom:4px; padding-left:10px; padding-right:10px; } .datalist tr:hover, .datalist tr.altrow{ background-color:#dca06b; /* 動(dòng)態(tài)變色 */ } input{ /* 按鈕的樣式 */ border:1px solid #744011; color:#744011; } --> </style> <script language="javascript"> var xmlHttp; function createXMLHttpRequest(){ if(window.ActiveXObject) xmlHttp = new ActiveXObject("Microsoft.XMLHttp"); else if(window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); } function getXML(addressXML){ var url = addressXML + "?timestamp=" + new Date(); createXMLHttpRequest(); xmlHttp.onreadystatechange = handleStateChange; xmlHttp.open("GET",url); xmlHttp.send(null); } function addTableRow(sName, sClass, sBirth, sConstell, sMobile){ //表格添加一行的相關(guān)操作,可參看7.2.1節(jié) var oTable = document.getElementById("member"); var oTr = oTable.insertRow(oTable.rows.length); var aText = new Array(); aText[0] = document.createTextNode(sName); aText[1] = document.createTextNode(sClass); aText[2] = document.createTextNode(sBirth); aText[3] = document.createTextNode(sConstell); aText[4] = document.createTextNode(sMobile); for(var i=0;i<aText.length;i++){ var oTd = oTr.insertCell(i); oTd.appendChild(aText[i]); } } function DrawTable(myXML){ //用DOM方法操作XML文檔 var oMembers = myXML.getElementsByTagName("member"); var oMember = "", sName = "", sClass = "", sBirth = "", sConstell = "", sMobile = ""; for(var i=0;i<oMembers.length;i++){ oMember = oMembers[i]; sName = oMember.getElementsByTagName("name")[0].firstChild.nodeValue; sClass = oMember.getElementsByTagName("class")[0].firstChild.nodeValue; sBirth = oMember.getElementsByTagName("birth")[0].firstChild.nodeValue; sConstell = oMember.getElementsByTagName("constell")[0].firstChild.nodeValue; sMobile = oMember.getElementsByTagName("mobile")[0].firstChild.nodeValue; //添加一行 addTableRow(sName, sClass, sBirth, sConstell, sMobile); } } function handleStateChange(){ if(xmlHttp.readyState == 4 && xmlHttp.status == 200) DrawTable(xmlHttp.responseXML);//responseXML獲取到XML文檔 } </script> </head> <body> <input type="button" value="獲取XML" onclick="getXML('9-4.xml');"><br><br> <table class="datalist" summary="list of members in EE Studay" id="member"> <tr> <th scope="col">Name</th> <th scope="col">Class</th> <th scope="col">Birthday</th> <th scope="col">Constellation</th> <th scope="col">Mobile</th> </tr> </table> </body> </html>

我們可以看到,在客戶端獲得XML 文件的代碼如下:

<input type="button" value="獲取XML" onclick="getXML('9-4.xml');">

也就是說,是直接取得XML 數(shù)據(jù)的。而實(shí)際開發(fā)中返回XML 數(shù)據(jù)的工作是通過服務(wù)器端(如:ASP.NET、JSP等)的代碼動(dòng)態(tài)生成的。換句話說,getXML('...') 中的文件地址應(yīng)該是.aspx 或.jsp等動(dòng)態(tài)頁面的后綴。

使用jQuery 框架實(shí)現(xiàn)

如果在客戶端使用jQuery 框架,實(shí)現(xiàn)AJAX 獲得服務(wù)器端的XML數(shù)據(jù)。

代碼如下:

<html> <head> <title> demo </title> <meta name="Author" content="xugang" /> <script language="javascript" src="jquery.min.js"></script> <script type="text/javascript"> function getXML(addressXML){ //使用jquery的ajax方法 $.ajax({ type:"GET", , dataType:"xml", //返回類型(區(qū)分大小寫) success:function(myXML){ //each 遍歷每個(gè)<member>標(biāo)記 $(myXML).find("member").each( function(){ var oMember="",sName="",sClass="",sBirth="",sConstell="",sMobile=""; sName = $(this).find("name").text(); sClass = $(this).find("class").text(); sBirth = $(this).find("birth").text(); sConstell = $(this).find("constell").text(); sMobile = $(this).find("mobile").text(); //添加行 $("#member").append($("<tr><td>"+sName +"</td><td>" + sClass +"</td><td>" + sBirth +"</td><td>" + sConstell +"</td><td>" + sMobile +"</td></tr>")); } ) } }) } </script> </head> <body> <input type="button" value="獲取XML" onclick="getXML('9-4.xml');"> <br/> <TABLE class="datalist" id="member"> <TR> <TH scope="col">Name</TH> <TH scope="col">Class</TH> <TH scope="col">Birthday</TH> <TH scope="col">Constellation</TH> <TH scope="col">Mobile</TH> </TR> </TABLE> </body> </html>

服務(wù)器端傳遞XML 數(shù)據(jù)的方式不變。

希望本文所述對(duì)大家的Ajax程序設(shè)計(jì)有所幫助。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)頁制作
易賢網(wǎng)手機(jī)網(wǎng)站地址:AJAX對(duì)服務(wù)器返回XML的處理方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)