分针网——每日分享:Ajax数据返回格式问题解决

加入职业技能圈 q群:272292492
更多文章:www.f-z.cn


服务端返回的数据格式为:

  
  
response . setContentType ( "text/xml;charset=utf-8" ) ;

      设置发送到客户端的响应的内容类型为xml格式、编码方式为UTF-8的文本内容。
      客户端接收代码为:
  
  
if (req .readyState == 4 ) {
if (req .status == 200 ) {
var city = req .responseXML . getElementsByTagName ( "city" ) ;
... ... .
}
}

      通过状态判断后获取服务端返回文档中的指定标签内容。但是通过浏览器出现错误提示,如下:
MyHtml.html:27 Uncaught TypeError: Cannot read property 'getElementsByTagName' of null
      通过调试语句alert(req.responseXML);窗口输出已下内容:
      可见服务端返回的内容为空。但是通过调试语句alert(req.responseText);却输出了服务端返回的内容,如下:
      但是在Chrome中以上信息不会显示,因为在遇到上面的错误时就结束了,不会继续执行下面的代码。貌似这种机制更安全些。
      转换一下思路,既然可以获取到文本格式,就可以实现将文本格式的xml文档转换为xml文档,转换代码如下:
  
  
[javascript ] view plain copy print ?
var parser = new DOMParser ( ) ;
var xmlDoc = parser . parseFromString (req .responseText . toString ( ) , "text/xml" ) ;
var city = xmlDoc . getElementsByTagName ( "city" ) ;

      这样就可以正确获取到节点值。效果图如下:



附(response.setContentType()的String参数及对应类型)


  
  
[html ] view plain copy print ?
<option value = "image/bmp" >BMP < /option >
<option value = "image/gif" >GIF < /option >
<option value = "image/jpeg" >JPEG < /option >
<option value = "image/tiff" >TIFF < /option >
<option value = "image/x-dcx" >DCX < /option >
<option value = "image/x-pcx" >PCX < /option >
<option value = "text/html" >HTML < /option >
<option value = "text/plain" >TXT < /option >
<option value = "text/xml" >XML < /option >
<option value = "application/afp" >AFP < /option >
<option value = "application/pdf" >PDF < /option >
<option value = "application/rtf" >RTF < /option >
<option value = "application/msword" >MSWORD < /option >
<option value = "application/vnd.ms-excel" >MSEXCEL < /option >
<option value = "application/vnd.ms-powerpoint" >MSPOWERPOINT < /option >
<option value = "application/wordperfect5.1" >WORDPERFECT < /option >
<option value = "application/vnd.lotus-wordpro" >WORDPRO < /option >
<option value = "application/vnd.visio" >VISIO < /option >
<option value = "application/vnd.framemaker" >FRAMEMAKER < /option >
<option value = "application/vnd.lotus-1-2-3" >LOTUS123 < /option >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值