2013-01-07 85 views
0

我正在使用jQuery 1.8.3 Ajax函数进行跨源请求。下面的代码总是返回“失败”,但在控制台日志中记录每个Ajax请求的“200 OK”。鉴于日志显示的状态为200,不应执行成功功能吗?如何返回200状态时执行成功功能?使用jQuery Ajax,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] 

谢谢!

+1

[Ajax with JQuery:200 ok,but not“success”]的可能重复(http://stackoverflow.com/questions/4840825/ajax-with-jquery-200-ok-but-not-success) – JJJ

+0

这个问题的答案建议使用谷歌图书API或jsonp,这两者都不适合我 –

+0

如果网址不在同一个域名,那么你的运气不好。 – JJJ

回答

0

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

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调用。

+0

谢谢。我想这样做,但为了我所做的目的,更改服务器端不是一种选择。 –

+0

然后你将不得不使用代理。看到我更新的答案 – Wolf

相关问题