2011-12-14 19 views
7

Mam funkcję opakowania używanego do wysyłania żądań na serwer, muszę zrobić coś konkretnego, jeśli serwer zwróci kod 401 i nie jestem pewien jak uzyskać te daneJak uzyskać kod odpowiedzi na błąd HTTP w Jquery POST

$.mobile.showPageLoadingMsg();  
$.post(apiUrl+method,p,function(d) { 

    $.mobile.hidePageLoadingMsg(); 
    console.log(d.success); 
    console.log(d.message); 

    if(d.success == true){ 
     window[callback](d.data); 
    } 
    else{ 
     if(d.message != null){ 
      alert(d.message); 
     } 
    } 
},'json') 
.error(function() { 
    //need to check for 401 status here to do something 
    $.mobile.hidePageLoadingMsg(); 
    alert("error"); 
}); 

Jeśli mój kodu po stronie serwera generuje 401 wyjątek funkcja jQuery .error odbierze to tylko dlatego jej nie 200 OK, ale muszę sprawdzić, czy jego kod 401.

+0

=== nie ==, jak mądry dla! ==! = :) – Sam

Odpowiedz

11

W oddzwonieniu error sprawdź xhr.status gdzie xhr jest pierwszym argumentem funkcji.

0

Aktualizacja na „obietnica” metody: jak jQuery 1.5 możemy wywołać .fail() obietnicy i otrzymać kod statusu takiego:

$.post("example.php", function() { 
    alert("success"); 
}).fail(function(xhr) { 
    console.log(xhr.status); 
}); 

Zauważ, że .error() obietnica jest usuwany od jQuery 3.0

Powiązane problemy