2012-02-29 113 views
2

我似乎在這裏迷路了。我有一個jQuery請求發送GET請求與基本身份驗證。我的問題是即使身份驗證失敗,錯誤代碼也不會運行。 我的要求:ajax請求失敗的條件

$.ajax({ 
    type: type, 
    url: url, 
    dataType: 'json', 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader('Authorization', 'Basic ' + btoa(window.username + ":" + window.password)); 
    }, 
    success: callback, 
    error:function(){ 
     console.log('ERROR: ' + jqXHR.status); 
    }, 
    complete: function(jqXHR, textStatus) { 
     console.log('VOTE: ' + jqXHR.status); 
    } 
}); 

我得到的錯誤都在我的JSON響應,並在Status Code。我究竟做錯了什麼?

響應體:

{ 
"error": { 
    "code": 401, 
    "message": "Authentication failed" 
} 
} 

響應頭:

Status Code: 401 
Date: Wed, 29 Feb 2012 12:45:03 GMT 

在此先感謝

+0

什麼是服務器 – 2012-02-29 12:42:00

+0

狀態代碼返回的狀態代碼:401 – Neelesh 2012-02-29 12:42:31

+1

你定義jqXHR地方? – Michel 2012-02-29 12:45:32

回答

0

我想你是不是定義傳遞給誤差函數的變量。你有沒有在你的情況下試圖

error: function(jqXHR, textStatus, errorThrown){ 
     console.log('ERROR: ' + jqXHR.status); 
    }, 

我認爲它運行在錯誤的功能,但給人因爲變量jqXHR沒有定義,這樣你就得到一個錯誤的jqXHR.status沒有定義

+0

試過了。似乎並沒有進入錯誤函數仍然 – Neelesh 2012-02-29 12:50:55

+0

@Neelesh你是否正在做跨域或jsonp請求?因爲在這種情況下,錯誤處理程序不會被調用 – 2012-02-29 12:54:47

+0

我沒有提出跨域請求。怪異的部分是控制不去任何的功能。甚至沒有成功和完整。 – Neelesh 2012-02-29 12:57:09

0
function(){ 
    console.log('ERROR: ' + jqXHR.status); 
} 

是不正確該行中的一個javascript異常。

嘗試

function(jqXHR){ 
    console.log('ERROR: ' + jqXHR.status); 
} 
0

把錯誤處理程序在全球,看它是否有差別(所有參數):

jQuery(document).ajaxError(function(event, jqXHR, ajaxSettings, errorThrown) { 
    var errorMessage = "Ajax error: " + ajaxSettings.url + " : " + errorThrown + " : " + jqXHR.statusText + " : " + jqXHR.status; 

    if (jqXHR.status != "0" || errorThrown != "abort") { 
     alert(errorMessage); 
    } 
}); 

編輯注:全球的參數略有不同從本地化

error:function(jqXHR,textStatus,errorThrown){}, 

並使成功明確或許?

success: function(returnedStuff){ 
    callback(returnedStuff); 
},