我正在使用jQuery对远程服务器进行AJAX调用,但是使用代码(并且表面上是正确的)我得到一个空响应。如果我将dataType更改为“script”,我会在响应中获得预期的XML,但我无法对其执行任何操作。这是我正在使用的一些伪代码:
function sendData(data) { $.ajax( { type: "GET", url: "remote_server", dataType: "xml", data: "parameter=" + data, complete: function(xml) { console.info('XML result is',xml); }, contentType: "text/xml; charset=utf-8" }); }
还有一些需要注意的事项是我正在使用本地.htm文件来调用远程服务器。当我使用Web浏览器(http://remote_server/page?parameter=value)时,我得到了有效的XML响应。最后,XML响应头具有ASCII的编码类型,尽管我也尝试将代码中的charset值更改为ASCII,但结果相同。
感谢您提供的任何帮助。
答案 0 :(得分:5)
您遇到的问题是same origin policy。除非您使用JSONP,否则不能向另一个域中的URL发出AJAX请求。 JSONP通过加载一个脚本标记来解决这个问题,该脚本标记的URL作为src,并让Web服务器响应一些代码,这些代码包含在执行javascript方法回调的JSON结果中。
答案 1 :(得分:3)
您可以使用firebug中的NET选项卡查看正在进行的呼叫以及实际响应的内容。这可以帮助很多。
答案 2 :(得分:0)
您无法向远程域发出AJAX请求。您可以做的是创建脚本包含,但它要求响应作为javascript函数调用发送:
callback('<xml/>');
而不仅仅是
<xml/>
答案 3 :(得分:0)
只是预感,但检查通过ajax函数返回的数据的mime类型。如果您请求xml,则脚本期望内容编码为text / xml或some other derivative。
您可能也遇到了相同的原始政策,在这种情况下,您需要将所有内容重构为json并利用jsonp。