使用jQuery 1.4.1的XMLHttpRequest xml响应问题,如何强制将请求响应作为纯文本处理?

我只是在玩jQuery并尝试一些应该简单的东西,但它只是不起作用。

$(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 ..._days><type routes="85" city="t 

它变得“更好”,如果在浏览器中执行上述请求并通过“查看源代码”复制xml以在此处validationhttp://www.w3schools.com/Dom/dom_validate.asp它显示“未发现错误”,为什么它不会通过xmlhttprequest工作吗?

我究竟做错了什么?

是否有可能以某种方式强制xmlhttprequest的响应被处理为text / plain?

br,伊格斯

PS我已经厌倦了建议的dataType:“html”选项(最初忘了提),但“html”也不起作用,在Firebug中我可以看到有关解析/ moz-nullprincipal的相同错误。

此外,提供xml数据的服务由我无法访问的第三方控制,要么有办法做到这一点,要么我必须亲吻我的想法再见:(

您是否从同一个域执行此代码? ( http://soiduplaan.tallinn.ee

因为不允许您使用ajax调用从其他域获取数据…(除非使用JSONP或脚本数据类型..)

从远程服务器检索数据时(只能使用脚本或jsonp数据类型),…

替代方案是让jQuery请求一个本地文件,它将接收数据服务器端并将它们提供给ajax请求。

例如
php: http_post_data
asp: Microsoft.XMLHTTP

HTML怎么样?

 dataType : "html" 

http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests

“html”:将响应视为HTML(纯文本); 包含的脚本标签被评估。

它被称为同源政策 。 除非使用jsonpscript数据类型,否则不允许使用Ajax调用从其他域获取数据。

这应该是诀窍:

 $(document).ready(function(){ $('#test').click( function() { $.ajax({ url : 'http://soiduplaan.tallinn.ee/', dataType : 'xml', data : {a : 'p.routes', transport_id : 'tram', t : 'xml', l : 'ee'}, error : function(xhr, stat){ alert('error'); }, success : function(data){ alert('success'); $('#foo').html(data); // could also use text(data) to see XML returned as text } }); }); }); 

假设您有一个HTML文件,如:

  

Tester


注意:这似乎在IE8中工作正常,但在FF3.6中没有那么多

卫生署”

尝试YQL查询只发现robots.txt阻塞:(