0

我正在使用 jQuery 1.8.3 Ajax 函数发出跨域请求。下面的代码总是返回“失败”,但控制台日志中的每个 Ajax 请求都会记录“200 OK”。鉴于日志显示状态为 200,不应该执行成功功能吗?返回状态为 200 时,如何获取要执行的成功功能?

$().ready(function() {
    var checkIt = function(checkURL, resultP) {
    $.ajax({
      url: checkURL,
      type: 'GET',
      cache: false,
      success: function() {
        $(resultP).text("ok");
      },
      error: function() {
        $(resultP).text("fail");
      }
    });
  };
  checkIt("https://firstURL", "#p1p");
  checkIt("https://secondURL", "#p2p");
  checkIt("https://thirdURL", "#p3p");
)};

控制台日志显示如下(每个请求都有 200 响应)

[10:03:37.898] GET https://firstURL [HTTP/1.1 200 OK 141ms]
[10:03:37.898] GET https://secondURL [HTTP/1.1 200 OK 141ms]
[10:03:37.898] GET https://thirdURL [HTTP/1.1 200 OK 141ms]

谢谢!

4

2 回答 2

0

您尝试从中获取数据的 URL 可能被命中,因此为 200,但您尝试访问的服务器的错误或问题不允许跨域请求,因此“失败”。

于 2013-01-07T16:51:53.007 回答
0

这不起作用,因为它是跨域调用。

解决这个问题

JavaScript

创建一个函数

function getMyData(data) {
    alert(data);
    //Do the magic with your data
}

服务器端

在服务器端将数据包装在函数语法中

getMyData("Enter your data here");

JavaScript

然后创建一个脚本标签并添加一个链接到你的跨域页面

 <script type="text/javascript"
         src="cross ref url">
 </script>

参考:维基百科

编辑:另一个选项是在您的域上创建代理。即在您的域中创建一个页面,该页面在内部调用跨域页面并将相同的数据返回给您的Ajax 调用。

于 2013-01-07T17:39:48.237 回答