侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

AJAX对服务器返回XML的处理方法

技术  /  管理员 发布于 8年前   165

本文实例讲述了AJAX对服务器返回XML的处理方法。分享给大家供大家参考。具体分析如下:

在AJAX 中,服务器端如果返回的XML 文档,则可以通过异步对象的responseXML 属性来获取器XML 数据。而开发者可以利用DOM 的相关方法对其进行处理。

假设服务器返回的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>

客户端获得服务器端的该XML 数据,并将其显示在表格中。代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><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; /* 动态变色 */}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){ //表格添加一行的相关操作,可参看7.2.1节 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 数据的。而实际开发中返回XML 数据的工作是通过服务器端(如:ASP.NET、JSP等)的代码动态生成的。换句话说,getXML('...') 中的文件地址应该是.aspx 或.jsp等动态页面的后缀。

使用jQuery 框架实现

如果在客户端使用jQuery 框架,实现AJAX 获得服务器端的XML数据。

代码如下:

<html><head> <title> demo </title> <meta name="Author" content="xugang" /> <script language="javascript" src="//article/jquery.min.js"></script> <script type="text/javascript"> function getXML(addressXML){ //使用jquery的ajax方法 $.ajax({   type:"GET",   url:addressXML,   dataType:"xml", //返回类型(区分大小写)   success:function(myXML){   //each 遍历每个<member>标记   $(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>

服务器端传递XML 数据的方式不变。

希望本文所述对大家的Ajax程序设计有所帮助。


  • 上一条:
    AJAX使用get与post模式的区别分析
    下一条:
    探秘ajax跨域请求
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 2024/6/9最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 国外服务器实现api.openai.com反代nginx配置(0个评论)
    • 2024/4/28最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客