使用$ .getJSON执行跨域请求问题

时间:2011-02-20 07:03:42

标签: jquery asp.net web-services json cross-domain

我正在使用以下代码使用$ .getJSON进行跨域请求,请求已完成但有错误,我无法准确检测出抛出的错误是什么。

基于请求值的回调参数,我将其路由到某个检索所需JSON数据的方法。

$.getJSON("http://wthsrvr:45452/Handler.ashx/?Callback=DocumentReadStatus",
  {
      userID: vuserID,
      documentID: vdocumentID,
      format: "json"
  },
  function(result) {
      if (result.readStatus == '1') {
          alert("ACCEPTED");
      }
      else if (result.readStatus == '0') {
          alert("NOT ACCEPTED");
      }
      else {
          alert(result.readStatus);
      }
  });

仅供参考:在本地开发本地时,一切正常,但在解决方案部署到服务器并尝试执行相同操作后,我遇到了这个问题。

另外,我尝试使用与Web服务相同的功能,从服务器调用Web服务时遇到了同样的问题。

我正在使用ajaxSetup来检测抛出的错误。

$.ajaxSetup({ "error": function(XMLHttpRequest, textStatus, errorThrown) {
    alert("textStatus: " + textStatus);
    alert("errorThrown: " + errorThrown);
    alert("responseText: " + XMLHttpRequest.responseText);
 } 
});

2 个答案:

答案 0 :(得分:1)

要访问不同的网站,您必须使用JSONP,它实际上成为JavaScript文件的请求,数据作为JavaScript文件的一部分发回。

答案 1 :(得分:0)

实际上,这是一个许可问题。使用“Access-Control-Allow-Origin”HTTP标头,以便任何域以跨站点方式访问资源。

请检查以下MDN article