2013-08-07 3 views
0

Я делаю AJAX запросы, используя следующий формат:Как создать обратный вызов ошибки при сбое запроса JQuery AJAX?

$post('url', {someData:true}, myCallbackFunction, 'json); 

Проблема заключается в том, если на стороне сервера любой код, кроме 200 возвращается, функция обратного вызова не вызывается.

Например, если сеанс пользователя был отключен, я хочу вернуть 401 (неавторизованный) в качестве кода состояния вместе с объектом JSON в качестве результата, который имеет сообщение об ошибке. Но, если код статуса не равен 200, функция обратного вызова не вызывается.

Любые идеи, как обойти это?

+1

Попробуйте использовать ['.done()'] (http://api.jquery.com/deferred.done/) и ['.fail()'] (http://api.jquery.com/deferred .fail /) или даже просто '.fail()', если ваш обратный вызов успеха работает нормально. –

ответ

3
function errorCallback(response){ 
    alert(response.status + ' ' + response.statusText); 
} 
$.post('url', {someData:true}, myCallbackFunction, 'json').fail(errorCallback); 

Для получения более подробной информации см. jquery.post.

+0

этот работает, но я хочу, чтобы ответ JSON, возвращаемый сервером, передавался в обратный вызов ошибки. Любая идея, как получить ответ сервера, передается в качестве аргумента в обратный вызов ошибки? –

+1

'.fail (функция (результат) { myErrorCallback (result.responseJSON); }' работал. 'ResponseText' должен работать для ответа normal/non json.s –

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