处理responseXML的小问题
在利用Ajax与服务器进行异步通信时,我们经常要与 XMLHttpRequest 打交道,而要处理服务器应用程序的响应信息,通常有三种方式:
|
将响应信息格式化为Xml Document对象并返回 |
语法
var objDispatch = oXMLHttpRequest.responseXML;
Example
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");xmlhttp.open("GET", "http://localhost/books.xml", false);xmlhttp.send();alert(xmlhttp.responseXML.xml);
备注
变量,此属性只读,将响应信息格式化为Xml Document对象并返回。如果响应数据不是有效的XML文档,此属性本身不返回XMLDOMParseError,可以通过处理过的DOMDocument对象获取错误信息。
|
将响应信息作为字符串返回 |
语法
strValue = oXMLHttpRequest.responseText;
Example
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");xmlhttp.open("GET", "http://localhost/books.xml", false);xmlhttp.send();alert(xmlhttp.responseText);
|
以Ado Stream对象的形式返回响应信息 |
语法
strValue = oXMLHttpRequest.responseStream;
其中,第一种方法让许多人感到头痛不已,因为要在客户端通过js解析responseXML确实不是web程序员的强项,
下面以一个小例子说明如何取得响应XML的Node和Attribute.
Example
- ex.xml
<?xml version="1.0" encoding="UTF-8"?>
<process-definition name="1152516204687">
<start-state name="开始状态">
<transition name="流线101" to="状态1"/>
</start-state>
<state name="状态1"/>
</process-definition>
- 服务器处理
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new File("ex.xml"));
response.setContentType("text/xml");//这句一定要写,否则不能输出XML
response.getWriter().write(doc.asXML());
response.getWriter().flush();
- 客户端
var doc=xmlhttp.responseXML;
//取得名为"start-state"的节点
var startNode=doc.getElementsByTagName("start-state")[0];
alert(startNode);
//取得该节点中属性"name"的值
var stateName=startNode.getAttribute("name")alert(stateName);
本文介绍如何使用JavaScript处理Ajax请求返回的responseXML。包括获取XML节点和属性的具体方法,并提供了示例代码。
769

被折叠的 条评论
为什么被折叠?



