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. java怎样获取CPU占用率和硬盘占用率

    通过jmx可以监控vm内存使用,系统内存使用等,以下是网上某博客代码,特点是通过window和linux命令获得CPU使用率. 利用java程序实现获取计算机cpu利用率和内存使用信息. packag ...

  2. Jvm原理剖析与调优之内存结构

    一些不得不说的概念 JVM JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机包括一套字节码指令集.一组寄存器.一个栈.一个 ...

  3. JS的事件模型

    之前对事件模型还是比较清楚的,许多概念都清晰映射在脑海中.工作之后,一方面使用的局限性,二是习惯于用框架中的各种事件监听方式,简单即方便,久而久之,事件的一些概念开始淡出记忆中,就像我现在已经开始淡忘 ...

  4. python3获取网页天气预报信息并打印

    查到一个可以提供区域天气预报的url, https://www.sojson.com/open/api/weather/json.shtml?city=%E6%88%90%E9%83%BD打算用pyt ...

  5. Day 1 Python简单程序

    一.高级语言和低级语言   最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果.后来为了方便记忆,就将用0.1序列表示的机器指令都用符号助记 ...

  6. [转]关于OpenGL的绘制上下文

    [转]关于OpenGL的绘制上下文 本文转自(http://www.cnblogs.com/Liuwq/p/5444641.html) 什么是绘制上下文(Rendering Context) 初学Op ...

  7. Java为什么要配置环境变量及如何配置环境变量

    在没有配置环境变量之前,用cmd执行Java文件,需要指明Java的可执行文件,否则无法运行. 配置环境是为了在不用切换可执行文件目录下,方便Java程序的执行和控制. 那么环境变量就是让系统根据环境 ...

  8. k8s Kubernetes v1.10 最简易安装 shell

    k8s Kubernetes v1.10 最简易安装 shell # Master 单节点快速安装 # 最简单的安装shell,只为快速部署k8s测试环境 #环境centos 7.4 #1 初始化环境 ...

  9. 为什么《Dive into Python》不值得推荐

    2010 年 5 月 5 日更新:我翻译了一篇<<Dive Into Python>非死不可>作为对本文观点的进一步支持和对评论的回复,请见:http://blog.csdn. ...

  10. HDFS基本原理及数据存取实战

    ---------------------------------------------------------------------------------------------------- ...