$(document).ready(function(){ $.ajax({ url : 'http://soiduplaan.tallinn.ee/',data : {a : 'p.routes',transport_id : 'tram',t : 'xml',l : 'ee'},error : function(xhr,stat){ alert('error'); },success : function(data){ alert('success'); alert(data); } }); });
该片段位于test.js文件中,并包含在test.html文件中,该文件在Firefox(3.6)中打开,如file:/// C:/test.html和altough’success’显示数据为空且通过Firebug对XML的响应显示:
X`ML Parsing Error: no element found Location: moz-nullprincipal:{5ac44e50-2cb6-45d1-9cfe-0b999850ecdb} Line Number 1,Column 1:`
或者我尝试添加
dataType : "text"
没有效果,结果仍然作为xml处理(可能是因为响应具有content-type:text / xml; charset = UTF-8).
如果我设置,我能够通过Firebug看到响应结果
dataType : "script"
但是因为它实际上不是一个有效的js脚本,它只是失败了,Firebug显示:
invalid regular expression flag t <?xml version="1.0" encoding="UTF-8"?>..._days><types><type routes="85" city="t
它变得“更好”,如果在浏览器中执行上述请求并通过“查看源”复制xml以在此处验证http://www.w3schools.com/Dom/dom_validate.asp它显示“没有发现错误”,那么为什么它不能通过xmlhttprequest工作?
我究竟做错了什么?
是否有可能以某种方式强制xmlhttprequest的响应被处理为text / plain?
BR,
IGES
附:我已经厌倦了建议的dataType:“html”选项(最初忘了提及),但“html”也不起作用,在Firebug中我可以看到有关解析/ moz-nullprincipal的相同错误.
此外,提供xml数据的服务由我无法访问的第三方控制,要么有办法做到这一点,要么我必须亲吻我的想法再见:(
解决方法
因为不允许您使用ajax调用从其他域获取数据…(除非使用JSONP或脚本数据类型..)
When data is retrieved from remote servers (which is only possible using the script or jsonp data types),…
替代方案是让jQuery请求一个本地文件,它将接收数据服务器端并将它们提供给ajax请求.