2014-09-04 155 views
0

我使用jQuery.get()方法401未授權發行

$.get('login.php', function(d, textStatus, jqXHR){ 
    //alert(jqXHR.status) 
    var status = jqXHR.status; 
    if((status==200)||(status==202)){ 
     window.location.href = 'dashboard.html'; 
    }else if(status==401){ 
     alert('Error in login details') 
    }else{ 
     alert('Unknown Error') 
    } 
}); 

這是工作的罰款。當200 & 202時,它將重新顯示到儀表板頁面。但不是200 & 202,它在控制檯中傳遞錯誤但不顯示警報。

回答

1

這是因爲你所定義的回調函數只請求成功完成時調用。如果響應是200以外的任何內容,則該請求被認爲是錯誤的。要做你需要的,你可以使用$.ajax()方法:

$.ajax({ 
    url: 'login.php', 
    success: function() { 
     window.location.assign('dashboard.html'); 
    }, 
    error: function(xhr) { 
     if (xhr.status == 401) { 
      alert('Error in login details') 
     } else { 
      alert('Unknown Error') 
     } 
    } 
}); 
+0

感謝它的工作正常。但是,如果我得到401,它顯示未知的錯誤。但控制檯顯示401 – 2014-09-04 10:01:44

3

您需要爲fail狀態添加一些事件處理程序,該狀態將處理4xx和5xx錯誤。 success狀態只處理指示成功請求的HTTP代碼。從http://api.jquery.com/jQuery.get

var jqxhr = $.get("example.php", function(data, status) { 
    alert("success - " + status); 
}) 
.done(function(data, status) { 
    alert("second success - " + status); 
}) 
.fail(function(data, status) { 
    alert("error - " + status); 
}) 
.always(function(data, status) { 
    alert("finished - " + status); 
}); 
+0

我不想在此添加額外的事件。只是它顯示一個提醒。但提醒並不是 – 2014-09-04 09:58:41

+1

'.done','.fail'和'.always'不是額外的事件,它們是稱爲「Promises」的新系統的一部分,jQuery已經轉移到處理AJAX調用回調 – Joe 2014-09-04 10:00:13

+0

好吧如何在這裏找到。 401或其他一些 – 2014-09-04 10:05:51