您的位置:首页 > 其它

以XML格式传输数据 (2)--Ajax学习笔记

2007-12-11 19:57 621 查看
接着说从服务器发出XML格式数据响应到客户段的情况,并且说明它有什么好处,以及如何实现的,在WEB应用中客户端发出请求等待服务器响应过程中,服务器可以根据客户端请求的不同而进行相应的响应,除非是想获得一个很简单的数据,如年龄,姓名等,这时候服务器可以直接返回一个原始数据就可以了,但是恰恰不巧的是,在Ajax应用中多数请求是为了获得一组数据如一个用户的所有信息,或者一组用户的所有信息.这时候简单的文本就满足不了了,此时XML则是最好的选择如,有一个用户资料如下:

name= lionest

age=20

sex=man

phone=122266666

如果服务器用名/值对来发送的话,name=lionest&age=20&sex=man&phone=122266666,在客户端可能会根据不同的浏览器会得到有不同的结果!

1.name=lionest|age=20|sex=man|phone=122266666,

2.name|lionest|age|20|sex|man|phone|122266666,

然而如果使用XML格式来发送的话,无论客户端是什么样的浏览器得到的结果肯定是一样的,因为它是以固定的XML格式发送的,解析的时候必须按照XML格式来.

<user>

<name>lionest</name>

<age>20</age>

<sex>man</sex>

<phone>122266666</phone>

</user>

到现在服务器已经把XML的数据发送到客户端了,客户端怎么来处理呢,有两种方式,其实就是两个XMLHttpRequest属性 一个是responseText, 另一个是responseXML.从字面上应该可以看出它们的意思,前者是响应的文本,后者则是响应的XML格式.

如果你用前者来接受响应的话,当然可以,但是得到的和服务器传过的一模一样,如:

<user><name>lionest</name><age>20</age><sex>man</sex><phone>122266666</phone></user>

您该怎么处理这些数据呢,用正则来拆吧,这是一件对于那些没有对正则表达式语言的程序员很头疼的一件事.而且这样也不是我们所说的Ajax了!

所以我们来看看第二个属性responseXML,

if (request.readyState == 4) {
if (request.status == 200) {
var xmlDoc = request.responseXML;

var showElements = xmlDoc.getElementsByTagName("user");

var user = showElements[0];

var attributes=user.childNodes;

var attribute=false;

var value=false;

for(var x=0;x<attributes.length;x++){

var attibute=attributes[i].nodeName;

var value=attributes[i].nodeValues;

alert(attribute+"="+value);

}

}
}

上面的简单例子已经说明了,在从服务器发出响应的时候,用XML作为数据格式传递还是很高效的,客户端处理起来也很方便,可以看出它和从客户端发出请求时的情况恰恰相反!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: