2012-03-02 8 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

+0

ああありがとう...愚かな私。これを回答として追加して、それを受け入れます(8分が終わったら)。 – ThinkingInBits

答えて

0

あなたが$.eachとあなたのajaxPool配列を反復処理すると、thisはすでにabort()メソッドが含まれているjqXHRオブジェクトです。だから、$でjQueryオブジェクトに変換しようとしないでください。

$.each(ajaxPool, function(){ 
    this.abort(); 
}); 
関連する問題