在beforeSend上停止$ .ajax

时间:2012-05-08 21:49:45

标签: jquery ajax

我有这个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下停止ajax调用但返回false不会停止ajax调用。

我如何stop beforeSend上的ajax调用?

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

return false也适用。

4 个答案:

答案 0 :(得分:72)

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

答案 1 :(得分: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');
    }
});

答案 2 :(得分:6)

beforeSend:function(jqXHR,setting)
{
    // if(setting.url != "your url") jqXHR.abort();
    if(1 == 1) //just an example
    {
        jqXHR.abort();
    }
}

答案 3 :(得分:4)

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()了解实现细节。