使用jQuery Ajax,记录了200个statusCode但代码执行了错误功能

时间:2013-01-07 16:44:46

标签: jquery ajax

我正在使用jQuery 1.8.3 Ajax函数进行跨源请求。下面的代码始终返回“fail”,但在控制台日志中为每个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]

谢谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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>

reference: wikipedia

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