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

假设服务器返回的XML 文档,如下所示:

<?xml version="1.0" encoding="gb2312"?>
<list>
<caption>MemberList</caption>
<member>
<name>isaac</name>
<class>W13</class>
<birth>Jun24th</birth>
<constell>Cancer</constell>
<mobile>1118159</mobile>
</member>
<member>
<name>fresheggs</name>
<class>W610</class>
<birth>Nov5th</birth>
<constell>Scorpio</constell>
<mobile>1038818</mobile>
</member>
</list>

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

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>responseXML</title>
<style>
<!--
.datalist{
border:1pxsolid#744011; /*表格边框*/
font-family:Arial;
border-collapse:collapse; /*边框重叠*/
background-color:#ffd2aa; /*表格背景色*/
font-size:14px;
}
.datalistth{
border:1pxsolid#744011; /*行名称边框*/
background-color:#a16128; /*行名称背景色*/
color:#FFFFFF; /*行名称颜色*/
font-weight:bold;
padding-top:4px;padding-bottom:4px;
padding-left:12px;padding-right:12px;
text-align:center;
}
.datalisttd{
border:1pxsolid#744011; /*单元格边框*/
text-align:left;
padding-top:4px;padding-bottom:4px;
padding-left:10px;padding-right:10px;
}
.datalisttr:hover,.datalisttr.altrow{
background-color:#dca06b; /*动态变色*/
}
input{ /*按钮的样式*/
border:1pxsolid#744011;
color:#744011;
}
-->
</style>
<script language="javascript">
varxmlHttp;
functioncreateXMLHttpRequest(){
if(window.ActiveXObject)
xmlHttp=newActiveXObject("Microsoft.XMLHttp");
elseif(window.XMLHttpRequest)
xmlHttp=newXMLHttpRequest();
}
functiongetXML(addressXML){
varurl=addressXML+"?timestamp="+newDate();
createXMLHttpRequest();
xmlHttp.onreadystatechange=handleStateChange;
xmlHttp.open("GET",url);
xmlHttp.send(null);
}
functionaddTableRow(sName,sClass,sBirth,sConstell,sMobile){
//表格添加一行的相关操作,可参看7.2.1节
varoTable=document.getElementById("member");
varoTr=oTable.insertRow(oTable.rows.length);
varaText=newArray();
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(vari=0;i<aText.length;i++){
varoTd=oTr.insertCell(i);
oTd.appendChild(aText[i]);
}
}
functionDrawTable(myXML){
//用DOM方法操作XML文档
varoMembers=myXML.getElementsByTagName("member");
varoMember="",sName="",sClass="",sBirth="",sConstell="",sMobile="";
for(vari=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,sMobile);
}
}
functionhandleStateChange(){
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="listofmembersinEEStuday" 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="jquery.min.js"></script>
<scripttype="text/javascript">
functiongetXML(addressXML){
//使用jquery的ajax方法
$.ajax({
type:"GET",
url:addressXML,
dataType:"xml",//返回类型(区分大小写)
success:function(myXML){
//each遍历每个<member>标记
$(myXML).find("member").each(
function(){
varoMember="",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 对服务器返回的XML的处理js和jquery的更多相关文章

  1. html5 拖拽及用 js 实现拖拽功能的示例代码

    这篇文章主要介绍了html5 拖拽及用 js 实现拖拽,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. amaze ui 的使用详细教程

    这篇文章主要介绍了amaze ui 的使用详细教程,本文通过多种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  4. HTML5适合的情人节礼物有纪念日期功能

    这篇文章主要介绍了HTML5适合的情人节礼物有纪念日期功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. xcode – Cordova plugin.xml添加“Header Search Paths”条目

    我希望将Cordova插件添加到Xcode项目后,在“HeaderSearchPaths”下添加一个新条目.如何在Cordovaplugin.xml文件中进行配置?

  6. ios – 有关多个连接/提要/视图的XML解析的设计/实现建议

    >我应该在每个视图中都有解析器类/对象或解析XML提要吗?

  7. iOS的相当于Android的colors.xml的是什么?

    如果没有,组织整个应用程序使用的颜色的最佳方法是什么?

  8. iOS中的XML转换为JSON

    我需要将XML响应转换为JSON.我的XML响应:我正在使用本网站的XMLReader支持文件:XMLReader我正在使用此代码将XML转换为JSON我收到了JSON响应:我需要这样的回应:我在线转换时得到这个回应.如何获得这样的回应提前致谢.解决方法此代码不会将任何内容转换为JSON.它给你一个NSDictionary.您需要从字典中实际创建JSON数据.尝试这个大小.

  9. 在IOS9中的Cordova应用程序使用JQuery / Javascript的window.history问题

    在两个测试用例中唯一改变的是Cordova.js.解决方法我看到这是几个星期前,但我会发布这个,以防其他人遇到它.听起来它可能与iOS9中的哈希更改生成的导航事件有关.如果是这样,可以将其添加到index.html以禁用哈希侦听:

  10. ios – Info.plist格式不正确

    解决方法plist文件是严格指定格式的XML文档;XML和PropertyList结构都有非常严格的规则.如果您尝试手动编辑info.plist(即文本),您可以轻松搞砸事情,方法是打开Asas>源代码:您不太可能正确使用此格式.因此,您应该始终使用OpenAs>编辑info.plist.物业清单:这允许属性列表编辑器为您生成XML,并且不太可能在生成的XML结构中出错.当然,我想你仍然可能搞砸某些东西的价值……

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部