условие отказа AJAX-запроса - PullRequest
2 голосов
/ 29 февраля 2012

Кажется, я здесь потерян.У меня есть запрос jQuery для отправки GET запроса с базовой аутентификацией.Моя проблема, даже если аутентификация не удалась, код ошибки никогда не запускается.Мой запрос:

$.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

заранее спасибо

Ответы [ 3 ]

0 голосов
/ 29 февраля 2012
function(){
    console.log('ERROR: ' + jqXHR.status);
}

неверно, поскольку переменная jqXHR не определена, поэтому вы получаете исключение javascript в этой строке.

try

function(jqXHR){
    console.log('ERROR: ' + jqXHR.status);
}
0 голосов
/ 29 февраля 2012

Поместите обработчик ошибок в глобальный, чтобы увидеть, если он имеет значение (со всеми параметрами):

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);
},
0 голосов
/ 29 февраля 2012

Я думаю, вы не определяете переменные, передаваемые в функцию ошибки. Вы пробовали

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

в вашем случае, я думаю, что он запускает функцию ошибки, но выдает ошибку, поскольку jqXHR.status не определено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...