解析Ajax返回的XML时出错
Error parsing returned XML by Ajax
我正在尝试通过ajax请求读取http响应。作为回显服务器,我在主机上使用一个简单的套接字。它返回包含XML的http-response。就像这样:
HTTP/1.1 200 OK
日期:星期五,2011年11月18日03:16:22 GMT
内容长度:94
连接:紧密
内容类型:text/xml
。等待下一个…
作为客户端,我使用以下ajax请求:
<html>
<head>
<script type="text/javascript" src="jquery-1.5.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
url: "http://localhost:8090/",
dataType: "text",
complete: function(jqXHR, textStatus){
alert(textStatus);
alert(jqXHR.responseText);
}
});
});
</script>
</head>
<body>
</body>
</html>
脚本执行后,我在FF中收到以下错误:
XML解析错误:no element found位置:moz-nullprincipal:{62148931-591e-41d7-8625-c86149386fc4}第1行,第1列:
如果我在FF, Chrome和IE中使用地址栏请求它,我可以读取结果XML而没有任何错误,但是这个Ajax调用返回错误。似乎我错过了一些与ajax工作。你能帮我一下吗?谢谢你。
如果我正确地阅读了您的问题,您正在从本地文件加载一些带有打开文件的HTML,并将其指向在本地主机上运行的套接字服务器。FireFox会认为这些是不同的域。HTML脚本需要来自与所请求的XML相同的本地主机服务器。
换句话说,出于安全原因,浏览器将只允许对"相同来源"的AJAX请求。这是一个术语(对于大多数浏览器)意味着"相同的协议,相同的主机,相同的端口"。
http://localhost:8090/与http://localhost或https://localhost的来源不同(注意https和http),也不是从机器上加载的HTML文件的来源相同(如file:///my/directory/test.html)。
您可以尝试将以下响应头添加到XML响应中:
HTTP/1.1 200 OK
Date: Fri, 18 Nov 2011 03:16:22 GMT
Content-Length: 94
Connection: close
Content-Type: text/xml
Access-Control-Allow-Origin: *
如果你的浏览器支持跨域资源共享(CORS),那么上面的"Access-Control-Allow-Origin"头应该允许从不同的域访问XML。
- javascript中的数组出错
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 我应该如何从xml文件构建一个javascript页面
- 将XML转换为普通的旧JavaScript对象
- 在Meteor项目中安装并包含npm模块后出错
- 解析JSON并从中删除对象会出错
- AngularJS指令出错-无法读取属性'编译'的未定义
- jQuery AJAX write to XML
- 如何将childNodes用于XML文档
- 使用javascript在MVC中查找网格长度时出错
- 尝试调用AngularJS上的函数时出错
- 使用JQuery将XML解析为SQLite DB时出错:所有行都具有相同的值
- 转换为 JSON 的 XML 节点会出错
- ExtJS 5中表单提交的XML响应出错
- JavaScript 中的 document.write 和 XML 出错
- 使用Javascript从其他服务器读取XML时出错
- 使用javascript从静态HTML页面编辑本地xml文件时出错
- 解析Ajax返回的XML时出错
- 使用AJAX从xml获取数据时出错
- 向XML添加TAG和使用变量时出错(E4X)