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

接着说从服务器发出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作为数据格式传递还是很高效的,客户端处理起来也很方便,可以看出它和从客户端发出请求时的情况恰恰相反!


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值