Вызов jQuery .ajax показывает успех при отключении компьютера.Как вызвать состояние ошибки AJAX? - PullRequest
2 голосов
/ 11 июля 2010

У меня есть следующий стандартный запрос jQuery ajax. Я пытался вызвать состояние ошибки, отключив мой компьютер от сетевого запроса (сервер отвечает за 10 секунд, поэтому это просто).

Когда я отключаюсь, alert('Success: '+ json); вызывается с null для ответа json. Я ожидаю, что часть ошибки будет вызвана.

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

$.ajax({
 url : 'post.php',
 data : { id : 123 },
 type: 'POST',
 dataType : 'json',
 success : function(json) {
    alert('Success: '+ json);
 },
 error : function(XMLHttpRequest, textStatus, errorThrown) {
     alert('Error: ' + errorThrown);
 },
 complete : function(xhr, status) { 

 }
});  

Ответы [ 2 ]

1 голос
/ 12 июля 2010

Я думаю, что была / есть ошибка с момента выпуска jQuery 1.4.

После обновления с 1.3.2 я заметил, что вызов прерывания для объекта XMLHttpRequest вызвал обратный вызов успеха, а не обратный вызов ошибки. Изучив кодовую базу, я заметил, что они заменили типичный метод прерывания на собственный. Может быть как-то с этим связано.

Вот пост об этом: http://forum.jquery.com/topic/after-aborting-an-ajax-call-success-event-is-still-being-fired

1 голос
/ 11 июля 2010
    $.ajax({
     url : 'post.php',
     data : { id : 123 },
     type: 'POST',
     dataType : 'json',
     success : function(json) {
        if(json!=null){
             alert('Success');
        }else{
            exceptionAjax(0,"no server data");
        }
     },
     error : function(XMLHttpRequest, textStatus, errorThrown) {
         exceptionAjax(XMLHttpRequest.statusText,XMLHttpRequest.responseText);
     },
     complete : function(xhr, status) { 

     }
    });

function exceptionAjax(responseStatus,responseText){
      alert('Error');   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...