Я пытаюсь прервать вызов ajax, используя beforeSend
если определенное условие истинно.
Как только я вызываю jqXHR.abort()
или return false
.
Я получаю следующую ошибку
TypeError: $.ajax(...).fail is not a function
.fail(function (jqXHR, textStatus, errorThrown) {
следующий код javascript
$.ajax({
type: "POST",
beforeSend: function (jqXHR) {
if (1 === 1) {
jqXHR.abort();
}
},
data: { x:1},
url: 'echo/json'
})
.fail(function (jqXHR, textStatus, errorThrown) {
console.log("error"+textStatus)
})
.done(function (data) {
console.log("ajax complete");
console.log(data);
});
jsfiddle: http://jsfiddle.net/939xG/
Кто-нибудь знает, почему jqXHR.abort() в beforeSend подтверждает ошибку?
или как я могу изменить код в beforeSend, чтобы я мог прервать запрос ajax без каких-либо ошибок.
Я использую jquery 1.7.2 и не могу перейти на более высокую версию
Когда вы $.ajax
в beforeSend, $.ajax
вернет false
а не jqXHR. Избегайте его, не прерывая в beforeSend, или не используя методы done и fail в пользу использования параметров успеха и ошибок.
var jqXHR = $.ajax({
type: "POST",
beforeSend: function (jqXHR) {
if (1 === 1) {
jqXHR.abort();
}
},
data: {
x: 1
},
url: 'echo/json',
success: function (data) {
console.log("ajax complete");
console.log(data);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("error" + textStatus)
}
});
console.log(jqXHR) // false
Это звучит как ошибка для меня, но поскольку обновление jquery не является вариантом, я не рассматривал эту возможность.