Как получить код ответа об ошибке HTTP в Jquery POST - PullRequest
7 голосов
/ 15 декабря 2011

У меня есть функция-обертка для отправки запросов на сервер, мне нужно сделать что-то конкретное, если сервер возвращает код 401, и я не уверен, как получить эти данные

 $.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");
});

Если мой код на стороне сервера выдает исключение 401, функция jquery .error подхватывает это только потому, что не 200 ОК, но мне нужно проверить, если это код 401.

Ответы [ 2 ]

11 голосов
/ 15 декабря 2011

В обратном вызове error установите флажок xhr.status, где xhr - первый аргумент функции.

0 голосов
/ 30 октября 2016

Обновление метода "обещание": начиная с jQuery 1.5 мы можем вызвать обещание .fail () и получить код состояния, подобный этому:

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

Обратите внимание, что обещание .error () удаленопо состоянию на jQuery 3.0

...