Ответ 1
Я нашел здесь, что xhr
вернется со статусом 0
. Кажется, это ошибка jQuery 1.4+. В 1.3 он называется обработчиком ошибок.
Я делаю запрос, а затем сразу после него прерываю.
var x = $.get(url, function (d, e, xhr) { alert(d); });
x.abort();
Проблема заключается в том, что она выполняет функцию success
и возвращает пустые данные... (пример здесь)
Есть ли способ jQuery для прерывания? или Есть ли способ проверить, был ли xhr
прерван?
Я нашел здесь, что xhr
вернется со статусом 0
. Кажется, это ошибка jQuery 1.4+. В 1.3 он называется обработчиком ошибок.
Лучший способ обнаружить аборты запроса и избежать ложных срабатываний в автономном режиме:
$("#loading").ajaxError(function(event, xhr) {
if (xhr.status === 0) {
if (xhr.statusText === 'abort') {
// Has been aborted
} else {
// Offline mode
}
}
});
РЕДАКТИРОВАТЬ: Попробуйте следующее:
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
});
Это по дизайну. Проверьте, если data
имеет значение null, чтобы определить, правильно ли ответил запрос.
Если запрос с jQuery.get() возвращается код ошибки, он будет терпеть неудачу если script также не вызвал глобальный
.ajaxError()
.
Может быть полезно справиться с этим (от здесь).