加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

AJAX 对服务器返回的XML的处理js和jquery

发布时间:2020-12-16 00:54:49 所属栏目:百科 来源:网络整理
导读:在AJAX 中,服务器端如果返回的XML 文档,则可以通过异步对象的 responseXML 属性来获取器XML 数据。而开发者可以利用DOM 的相关方法对其进行处理。 假设服务器返回的XML 文档,如下所示: ?xml version = " 1.0 " encoding = " gb2312 " ? list caption Mem

在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 数据的方式不变。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读