2010-10-20 1 views
12

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

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

Любые идеи?

Благодаря

+3

Какие «данные» вы говорите? Если есть ошибка сервера, откуда бы произошли какие-либо «данные» (кроме информации об ошибках в объекте xhr)? – Pointy

+2

Да, ответ JSON вроде этого {'error': 'Ваша учетная запись не была найдена.'} –

ответ

18

В:

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 

Cheers.

+0

Можете ли вы, пожалуйста, обновить этот ответ, чтобы включить новый стиль ajax для успеха/неудачи? – TheJKFever

0

Попробуйте jQuery JSONP plugin. Он добавляет функцию обратного вызова ошибки на запрос 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.

Смежные вопросы