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 文件加载
------解决方案--------------------
不会是文件木有找到吧!