读书人

(100分):为什么Ajax获得的XML数据为

发布时间: 2012-02-28 13:06:35 作者: rapoo

(100分):为什么Ajax获得的XML数据为null - Web 开发 / Ajax
Ajax调用服务器JSP代码执行读取xml文件的数据并返回。
但Ajax的回调函数中xmlHttp_main.responseXML的值为null, xmlHttp_main.responseTEXT却有值,为什么我返回的xml不能出现在responseXML;
如果我只是简单的返回一个测试的XML数据,却可以从responseXML中获取到:

Java code
String   strxml= "<?xml version=\"1.0\"  encoding=\"UTF-8\"?>";     strxml=strxml+ "<message><info>not file data! </info></message>";    //response.getWriter().write(strxml); 




以下是:main.jsp/main.xml/main.html中的内容:



main.jsp代码:
Java code
<%@ page contentType="text/html; charset=GBK"%> <%@ page import="java.io.*" %><%String filename = request.getRealPath("main.xml");java.io.File f = new java.io.File(filename);if (f.exists()){    int length = 0;        char [] buffer = new char[1024];    //out.write(buffer, 0, 1024);        java.io.FileReader fr = new java.io.FileReader(f);    length = fr.read(buffer);        response.setContentType( "text/xml; charset=UTF-8");    response.setHeader("Cache-Control", "no-cache");        response.getWriter().write(buffer);    fr.close();        String   strxml= "<?xml version=\"1.0\"  encoding=\"UTF-8\"?>";     strxml=strxml+ "<message><info>not file data! </info></message>";    //response.getWriter().write(strxml); }else{    out.write("File isn't exist!");}%>


main.xml文件内容:
XML code
<?xml version="1.0" encoding="UTF-8"?><note>    <rid> RoadId: 1029</rid>    <speed> Speed: 85.29</speed>    <status> status: 2</status>    <info> info: Blocked</info></note>


JScript code
function stateChanged() {   if (xmlHttp_main.readyState==4 && xmlHttp_main.status==200)  {     var txt,x,i;        txt="";    xmlDoc=xmlHttp_main.responseXML;            if(xmlDoc != null)        alert("xml:---"+xmlDoc);    x=xmlDoc.getElementsByTagName("info");    txt=txt+x[0].firstChild.nodeValue+"<br />";         document.getElementById("txtHint").innerHTML=txt;  }}


[解决办法]
1.服务器端安装xml解析了没
2.出错处理那个地方的输出应该也是个xml节,不应该是 out.write("File isn't exist!");
应该是这样out.write("<err>File isn't exist!</err>");
你这个情况需要查看下ResponseText,看看xml串是否正确

[解决办法]
单独访问main.jsp看下输出对不对?
一次只是读取一个 buffer的字节数, 一般循环读完文件
[解决办法]
你的url直接请求xml文件就可以了。

如果需要java处理,确保你设置response.setContentType("text/xml")
确保输出的是合法的xml格式。

你可以在浏览器里面输入的你的jsp地址测试得到的是否是合法的xml
[解决办法]
兼容IE、Firefox、Chrome、Safari、Opera 等浏览器的XML 文件加载
[解决办法]
不会是文件木有找到吧!

读书人网 >Ajax

热点推荐