Подтвердить что ты не робот

JQuery получает данные об ошибке XHR

Если я сделаю запрос AJAX jquery, который будет успешным, я верну свои данные JSON. Однако, если я сделаю запрос, и я получу что-то другое, кроме кода ответа 200, я не могу вернуть данные в обратном вызове Jquery. Мне нужны данные, так как у них есть описание данных.

success: function (data, tst, xhr) {
    $.log('XHR OK');
},
error: function (xhr, tst, err) {
    $.log('XHR ERROR ' + XMLHttpRequest.status);
},

Любые идеи?

Спасибо

4b9b3361

Ответ 1

В:

error: function (xhr, tst, err) {
    $.log('XHR ERROR ' + XMLHttpRequest.status);
},

вы можете использовать

error: function (XMLHttpRequest, textStatus, errorThrown) {
    $.log('XHR ERROR ' + XMLHttpRequest.status);
    return JSON.parse(XMLHttpRequest.responseText);
},

чтобы получить ответ JSON в случае ошибки.

XMLHttpRequest.responseText

Приветствия.

Ответ 2

Попробуйте jQuery JSONP-плагин. Он добавляет обратный вызов ошибки к запросу JSON следующим образом:

$.jsonp({   
    url: "Your URL",
    data: {data: "Some Data"},
    dataType: 'jsonp',
    timeout: 2000,
    success: function(data, status) {
        // Do something with data here
    },
    error: function(xhr, text_status){
        // Handle the server error
    }
});

Он делает это, используя тайм-аут, чтобы дождаться сервера. К сожалению, нет другого способа сообщить, отвечает ли сервер на что-то иное, кроме ответа 200.