Как определить, был ли запрос отменен? - PullRequest
32 голосов
/ 06 сентября 2010

Я делаю запрос, а затем сразу после него отменяю.

var x = $.get(url, function (d, e, xhr) { alert(d); });
x.abort();

Проблема в том, что он выполняет функцию success и возвращает пустые данные ... (пример здесь)

Есть ли метод jQuery для отмены? или есть ли способ проверить, был ли прерван xhr?

Ответы [ 4 ]

42 голосов
/ 16 декабря 2012

Лучший способ обнаружить прерывание запроса и избежать ложных срабатываний в автономном режиме:

$("#loading").ajaxError(function(event, xhr) {
  if (xhr.status === 0) {
    if (xhr.statusText === 'abort') {
      // Has been aborted
    } else {
      // Offline mode
    }
  }
});
12 голосов
/ 06 сентября 2010

Я нашел здесь , что xhr вернется со статусом 0.Кажется, это ошибка jQuery 1.4+.На 1.3 он вызвал обработчик ошибок.

2 голосов
/ 06 сентября 2010

РЕДАКТИРОВАТЬ: Попробуйте это:

x.onreadystatechange = null;
x.abort();

Кажется, работает. Не уверен, какие побочные эффекты, если таковые имеются.


Оригинальный ответ:

Было бы достаточно просто проверить полученный ответ?

var x = $.get("./", function (d, e, xhr) {
    if(d) {
        // run your code with response
        alert(d);
    }
    // otherwise, nothing will happen
});
1 голос
/ 06 сентября 2010

Это по замыслу. Проверьте, является ли data нулевым, чтобы определить, правильно ли был получен запрос.

Если возвращается запрос с jQuery.get () код ошибки, он молча провалится если сценарий также не вызвал глобальный .ajaxError() метод.

Это может быть полезно для обработки (с здесь ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...