Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么beforeSend thorws中的jqXHR.abort()会出现错误?_Javascript_Jquery - Fatal编程技术网

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