Javascript 为什么beforeSend thorws中的jqXHR.abort()会出现错误?
如果某个条件为真,我将尝试在发送前使用Javascript 为什么beforeSend thorws中的jqXHR.abort()会出现错误?,javascript,jquery,Javascript,Jquery,如果某个条件为真,我将尝试在发送前使用beforeSend中止ajax调用 只要我调用jqXHR.abort()或返回false 我得到以下错误 TypeError: $.ajax(...).fail is not a function .fail(function (jqXHR, textStatus, errorThrown) { 下面是javascript代码 $.ajax({ type: "POST",
beforeSend
中止ajax调用
只要我调用jqXHR.abort()
或返回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:
有人知道为什么beforeSend thorws中的jqXHR.abort()会出错吗
或者如何在beforeSend中更改代码,以便在没有任何错误的情况下中止ajax请求
我使用的是jquery 1.7.2,当您中止
$时无法升级到更高版本。在beforeSend中,$中的ajax
将返回false
,而不是jqXHR。通过不在beforeSend中中止,或者不使用done和fail方法,而是使用success和error选项来避免这种情况
这听起来像是一个bug,但因为升级jquery不是一个选项,所以我没有考虑这种可能性。我猜一旦您中止它,$.ajax()不再返回jqXHR。可能是个虫子。如果您使用错误和成功回调而不是“完成/失败”,我怀疑它会停止错误。您可以尝试查找错误并在文件中修补它。如果您想修复它,下面是为修复它所做的更改:谢谢您的回答
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