Как отменить ожидающий вызов Jquery Ajax?

У меня есть веб-сервисы REST, которые поддерживают длительный опрос. если у сервера есть какие-либо новые данные, которые он отправит мне, если я сделаю запрос Jquery Ajax. Если нет обновлений с сервера, запрос будет в состоянии ожидания. Теперь я хочу отменить этот запрос, если пользователь внезапно выйдет из системы. я пытался как

var request=$.ajax({
--------
-
-------
});

request.abort();

Но здесь я получаю сообщение об ошибке, так как запрос не получил никаких данных с сервера (причина все еще находится в состоянии ожидания). Так что это "ноль".

Как я могу отменить этот запрос Ajax?


person Rajeev    schedule 12.02.2014    source источник
comment
Кажется, что все подразумевают, что вы делаете правильно, см. здесь потенциальный дубликат: jquery">stackoverflow.com/questions/446594/ Вы также можете установить тайм-аут для запроса, если хотите прервать его по истечении заданного периода времени.   -  person DrLivingston    schedule 13.02.2014


Ответы (1)


Прерывание расценивается jquery как ошибка, поэтому вам нужно будет проверить свой jqXHR statusText в обработчике ошибок, чтобы увидеть, было ли оно прервано, и обработать его соответствующим образом.

Вот код для иллюстрации:

var jqXHR = $.ajax({
    url: '...'
});

// jqXHR.abort() is regarded as an error, so your logic for detecting
// it should go in the fail handler.  Here's how you could set this up:
jqXHR.fail(function(args) {
    if (jqXHR.statusText == 'abort') {
        console.log('AJAX aborted');
        return;
    }

    // Other error processing goes here.

});

// If pending, abort AJAX call
if (jqXHR.state() == 'pending') {
    jqXHR.abort();
}
person huwiler    schedule 12.02.2014