Ajax数据返回格式问题解决

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

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文档,转换代码如下:

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(req.responseText.toString(), "text/xml");
var city = xmlDoc.getElementsByTagName("city");

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

 

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

<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>

参考文献

1.http://j2ees.iteye.com/blog/2034371

2.http://blog.sina.com.cn/s/blog_a03d702f010143tw.html

美文美图

Ajax数据返回格式问题解决的更多相关文章

  1. Ajax-06 Ajax数据交换格式

    1.数据交换格式 服务端返回的数据,在本质上都是字符串,只是原生Ajax 或jQuery Ajax将这些字符串转换为容易理解的各种常用格式. a. Text 文本字符串 b.  XML JavaScr ...

  2. Ajax数据解析格式

    Ajax数据解析格式 一.前言 在服务器端 AJAX 是一门与语言无关的技术.在业务逻辑层使用何种服务器端语言都可以. 从服务器端接收数据的时候,那些数据必须以浏览器能够理解的格式来发送.服务器端的编 ...

  3. Java学习-013-文本文件读取实例源代码(两种数据返回格式)

    此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代 ...

  4. GoWeb开发_Iris框架讲解(二):Get、Post、Put等请求及数据返回格式

    数据请求方式的分类 所有的项目中使用的请求都遵循HTTP协议标准,HTTP协议经过了1.0和1.1两个版本的发展. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP ...

  5. PHP IE9 AJAX success 返回 undefined 问题解决

    jquery的AJAX返回结果为undefined,并且有“由于出现错误c00ce56e”的错误提示.这个问题是由于IE9不能解析其他编码而产生的.解决这个问题之需要按照W3C规范,声明一下编码为ut ...

  6. Ajax中返回数据的格式

    Ajax中常见的返回数据的格式有三种:分别为文本,XML和JSON 返回的文本格式我们在上一堂课Ajax基础介绍中已经介绍过了 Ajax.php Form.html:通过Ajax对象的response ...

  7. ajax访问服务器返回json格式

    使用ajax访问服务器返回多条数据,比如返回一个表中的所有数据,页面该如何处理呢?如何获取数据呢?一直不会用ajax返回json格式,今天研究了下,分享给大家~ 首先需要引用服务,点击项目右键,添加引 ...

  8. Asp.net Core WebApi 支持json/xml格式的数据返回

    Asp.net core 在做webapi项目的时候,默认是只返回json格式的数据的,如果想要开启xml数据返回,需要在startup里配置如下: public void ConfigureServ ...

  9. AJAX制作JSON格式的实时更新数据的方法

    之前有写过这样的文章,但是出现了几个问题,第一,如果每秒都像数据库发送请求势必会造成服务器的压力过大,第二,如果使用JS的话,是不可以取得系统时间的,因为JS运行在客户端,所以只能取得客户端时间, 如 ...

随机推荐

  1. HTML中鼠标滚轮事件onmousewheel处理

    滚轮事件是不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件 ...

  2. idea热部署

    <!-- 热部署模块 --> <dependency> <groupId>org.springframework.boot</groupId> < ...

  3. C指针 指针和数组 二维数组的指针 指针应用

    直接到变量名标识的存储单元中读取变量的值--直接寻址 通过其他变量间接找到变量的地址读取变量的值--间接寻址 指针变量存放地址 显示变量的地址 指针变量使用前必须初始化,若不知指向哪,可先指向NULL ...

  4. Java常用排序算法

    在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序. 一般来说外排序分为两个步骤:预处理和合并排序.首先,根据可用内存的大小,将外存上含有n个纪录的文件分成若干长 ...

  5. Laravel-admin 使用Layer相册功能

    使用Laravel-admin后台,Laravel-admin已经集成了很多前端组件,但是在手册中也没有发现能够展示相册的插件,而本人比较喜欢Layer弹窗的插件所以想使用Layer来进行效果展示 通 ...

  6. 记录 Python3 安装 Scrapy 遇到的问题

    开发环境:Windows 10 + Python 3 使用 pip 去安装 Scrapy,  pip install scrapy , 报了一个错误. 原因:加 --user 的作用是显式指定安装在用 ...

  7. 小知识点 取消button动作 和取巧按钮高亮

      如果让按钮在点击时不变暗 进行下面设置:   如果使butten失去动画效果进行下面设置:(一般用于图片+文字,效果等于可以加图片班的label,当然label不能加图片)

  8. windows系统和centos双系统安装引导项修改

    在CentOS下修改Linux引导文件:     (1)找到win10的引导 1.首先我们点击第一个系统进入centos           2.运行终端,敲入命令su,为了获取管理员权限,然后终端提 ...

  9. jQuery 效果 – 停止动画

    jQuery stop() 方法用于在动画或效果完成前对它们进行停止. 点击这里,向上/向下滑动面板 实例 jQuery stop() 滑动 演示 jQuery stop() 方法. jQuery s ...

  10. Python3 基础语法

    编码 默认情况下,Python 3源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 -*- 标 ...