jQuery AJAX调用Web服务产生空响应

时间:2009-12-15 15:48:00

标签: jquery ajax

我正在使用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,但结果相同。

感谢您提供的任何帮助。

4 个答案:

答案 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