2013-01-07 138 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

相關問題