Подтвердить что ты не робот

Как определить, был ли запрос отменен?

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

$("#loading").ajaxError(function(event, xhr) {
  if (xhr.status === 0) {
    if (xhr.statusText === 'abort') {
      // Has been aborted
    } else {
      // Offline mode
    }
  }
});

Ответ 3

РЕДАКТИРОВАТЬ: Попробуйте следующее:

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
});

Ответ 4

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

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

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