2012-03-02 90 views
1

我試圖跟蹤數組中的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); 
     }); 
+1

使用'this.abort()''this'是xhr對象,將它轉換成jQuery對象沒有任何意義。 – bfavaretto 2012-03-02 13:20:39

+0

啊,謝謝...愚蠢的我。添加這個作爲答案,我會接受它(一旦8分鐘後)。 – ThinkingInBits 2012-03-02 13:24:03

回答

0

當你與$.each迭代你ajaxPool陣列,this已經是jqXHR對象包含abort()方法。所以你不應該試着用$把它轉換成jQuery對象。使用這個:

$.each(ajaxPool, function(){ 
    this.abort(); 
}); 
相關問題