47

我有这个 jQuery ajax 调用:

$.ajax({
    url : 'my_action',
    dataType: 'script',
    beforeSend : function(){
        if(1 == 1) //just an example
        {
            return false
        }
    },
    complete: function(){
        console.log('DONE');
    }
});

beforeSend如果条件返回true但返回 false 不会停止 ajax 调用,我想停止ajax 调用。

我怎样才能stop在 ajax 上调用beforeSend

======= 更新 =========

return false也可以。

4

4 回答 4

80
$.ajax({
    url : 'my_action',
    dataType: 'script',
    beforeSend : function(xhr, opts){
        if(1 == 1) //just an example
        {
            xhr.abort();
        }
    },
    complete: function(){
        console.log('DONE');
    }
});
于 2012-05-08T21:53:13.123 回答
10

大多数 jQuery Ajax 方法返回一个 XMLHttpRequest(或等效的)对象,因此您可以只使用 abort()。

var test = $.ajax({
    url : 'my_action',
    dataType: 'script',
    beforeSend : function(){
        if(1 == 1) //just an example
        {
            test.abort();
            return false
        }
    },
    complete: function(){
        console.log('DONE');
    }
});
于 2012-05-08T21:53:45.393 回答
6
beforeSend:function(jqXHR,setting)
{
    // if(setting.url != "your url") jqXHR.abort();
    if(1 == 1) //just an example
    {
        jqXHR.abort();
    }
}
于 2012-05-08T21:54:32.240 回答
5

xhr.done(); 这对我有用

$.ajax({
    url : 'my_action',
    dataType: 'script',
    beforeSend : function(xhr){
        if(1 == 1) //just an example
        {
            return false
        };
        xhr.done(); //this works for me
    },
    complete: function(){
        console.log('DONE');
    }
});

http://api.jquery.com/jquery.ajax/

jqXHR.done(function( data, textStatus, jqXHR ) {});

成功回调选项的替代构造,请参阅deferred.done()实现细节。

于 2016-07-07T19:20:58.613 回答