在发送新的ajax请求之前杀死之前的ajax请求

时间:2012-03-02 13:18:14

标签: jquery ajax

我正在尝试跟踪数组中的ajax请求并在下一个请求开始之前取消任何现有请求,但我得到$(this).abort()函数不存在。有什么想法吗?

   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);
        }); 

1 个答案:

答案 0 :(得分:0)

当您使用ajaxPool迭代$.each数组时,this已经是包含abort()方法的jqXHR对象。所以你不应该尝试将它转换为$的jQuery对象。使用此:

$.each(ajaxPool, function(){
    this.abort();
});