2011-10-07 94 views
1

我試圖正確處理可能由jQuery中的任何AJAX調用返回的HTTP狀態錯誤(404,501等)(我正在使用1.6版本。 4)但是對於我的生活,我無法得到適當的響應代碼(所有的值都是'0'或'錯誤',沒有更具體的)。從jQuery中讀取HTTP狀態/錯誤代碼的問題AJAX

UPDATE:創建的jsfiddle here

更新:加入statusCode: { *** }按3nigma的建議,但其中不火

<!DOCTYPE html><html> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
    <script type="text/javascript"> 
     function doAjax() 
     { 
      $.ajax({ 
       type: "GET", 
       url: "http://www.non-existant-url.com/", 
       success: function(data, textStatus, jqXHR){ 
        alert("Success"); 
       }, 
       error: function (xhr, textStatus, errorThrown) { 
        console.log("xhr.status: " + xhr.status); 
        console.log("xhr.statusText: " + xhr.statusText); 
        console.log("xhr.readyState: " + xhr.readyState); 
        console.log("xhr.responseText: " + xhr.responseText); 
        console.log("xhr.responseXML: " + xhr.responseXML); 
        console.log("textStatus: " + textStatus); 
        console.log("errorThrown: " + errorThrown); 
        console.log("xhr.redirect: " + xhr.redirect); 
         }, 
       statusCode: { 
        404: function() { console.log("404"); }, 
        501: function() { console.log("501"); }, 
        502: function() { console.log("502"); } 
       } 
      }); 
     } 
    </script> 
</head> 
<body><button onclick="doAjax();">Do AJAX</button></body> 
</html> 

我得到的輸出如下:

Console Output

僅供參考我已經學習了文檔...

http://api.jquery.com/jQuery.ajax/(以下簡稱 「錯誤(jqXHR,textStatus,errorThrown)」 一節) http://api.jquery.com/jQuery.ajax/#jqXHR

但jqXHR似乎並沒有得到適當的填充。我一定在做錯事,現在我已經沒有想法了,所以我非常感謝一些幫助。謝謝!

回答

1

我是numpty補充說,AJAX並不出於安全原因,工作跨域。如果我更改網址,使其與主機的目標位置相同,那麼狀態代碼和文本等將被奇蹟般地填充。

我已經添加了另一個JSFIDDLE示例來演示here

3

嘗試使用statusCode jQuery的1.5

$.ajax({ 
    ... 
    statusCode: { 
    502: function() { 
     alert('502'); 
    } 
    } 
}); 
+0

感謝您的回覆。我試過這個,但函數沒有被調用。我會更新我的原始帖子以反映您的建議。 –

+0

這是在jQuery 1.6中實現的。要檢查您的jQuery版本,您可以使用:http://stackoverflow.com/a/6867073/1042999 The Documentation:http://api.jquery.com/jquery.ajax/ –