我有这个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
也适用。
答案 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()
了解实现细节。