在发送新消息之前终止先前的ajax请求
问题描述:
我试图跟踪数组中的ajax请求,并在下一个消息发出之前取消所有现有请求,但我得到$(this).abort()函数不存在。有任何想法吗?在发送新消息之前终止先前的ajax请求
var ajaxPool = new Array();
$('.search_input').live('keyup', function() {
$.each(ajaxPool, function(){
$(this).abort();
});
var query = $('.search_input').val();
if (query == '' || query == ' ') {
$('.search_results').remove();
return false;
}
var request = $.ajax({ type: 'GET',
url: '{{ path('Search') }}/' + query,
beforeSend:function() {
},
success:function(data){
$('.search_results').remove();
$('.search_bar').append(data);
},
error:function(){
alert("Could not complete search.");
}
});
ajaxPool.push(request);
});
答
当你与$.each
迭代你ajaxPool
阵列,this
已经是jqXHR对象包含abort()
方法。所以你不应该试着用$
把它转换成jQuery对象。使用这个:
$.each(ajaxPool, function(){
this.abort();
});
使用'this.abort()''this'是xhr对象,将它转换成jQuery对象没有任何意义。 – bfavaretto 2012-03-02 13:20:39
啊,谢谢...愚蠢的我。添加这个作为答案,我会接受它(一旦8分钟后)。 – ThinkingInBits 2012-03-02 13:24:03