跨域Ajax调用没有找到元素位置:moz-nullprincipal

时间:2011-08-13 23:41:47

标签: jquery cross-domain

我试图通过jquery调用$.ajax()来调用跨域Web服务。服务返回

<?xml version="1.0" encoding="utf-8"?>
<double xmlns="http://www.webserviceX.NET/">1.4248</double>

如果我指定dataType xml(或者没有指定任何东西 - jquery正确猜测),我会收到XML Parsing Error: no element found Location: moz-nullprincipal:{4030734c-b902-4251-9067-1d1b5b15fc72} Line Number 1, Column 1:错误(看起来没有任何东西从服务中回来)。但是,如果我指定dataType jsonpscript - 我可以在firebug中看到所有内容都正确返回;然而jquery显然试图评估结果并给我相应的错误(缺少分号或类似)。

jQuery中是否有一种方法可以启用跨域调用来评估它?

注意:

  1. 知道后备选项是调用我的服务器上的程序,该程序将调用Web服务并将结果返回给浏览器;
  2. 确实指定crossDomain:true。它似乎没有任何区别。
  3. “错误”功能确实被调用。但是,而不是原始值“数据”包含“parseerror”。

1 个答案:

答案 0 :(得分:8)

跨域ajax仅允许用于JSONP,而不是XML

在JQuery 1.5中,他们添加了crossDomain:true参数,该参数只是将?callback=>值附加到url。如果设置该参数,则还必须设置dataType:'json'。跨域URL还必须支持JSONP并提供您期望的数据。