2017-10-10 17 views
1

私のような形があります、停止前の控えめなAJAX呼び出し

<script type="text/javascript"> 
    $("#search").on("keyup", function() 
    { 
     $("#myform").submit(); 
    }); 
</script> 

しかし、ユーザーがすばやく検索:

@using (Ajax.BeginForm("List", null, new AjaxOptions() { UpdateTargetId = "results" }, new { id = "myform" })) 
{ 
    <input id="search" type="text" value="" /> 
} 

を、私は、ユーザーが自分の検索]ボックスにキーを押したときに提出送信するためにはJavaScriptを宣言ブラウザは複数のAjaxリクエストを開始し、各コールの終了を1つずつ待つ。 ajaxを邪魔にならずに別のAjaxコールを送信する前に停止するにはどうすればいいですか?

+0

を行う前にあれば中止の$アヤックス()の要求にそれを打破 $("#myform").submit();を呼び出すのではなく、お勧めしますこの問題はありません。また、ユーザーが少なくとも3文字を入力するまで、送信をトリガーしないこともできます。最後に、フォーム提出ではなくオートコンプリートプラグインを使用することを検討してください。これはややうまく機能します。 – ADyson

+0

recommandationに感謝しますが、まだ非同期タスクです。フィールドをオートコンプリートに変更できません。それは既存のインターフェースです。 – GGO

答えて

0

私はおそらく、直接&あなたは非同期タスクとしてご.NETエンドポイントを定義した場合、別の1

$("#search").on("keyup", function(){ 
    var xhr; 

    if (xhr){ 
      xhr.abort(); //stop previous ajax   
    } 

    xhr = $.ajax({ 
       type: "GET", 
       url: "@Url.Action(list)", 
       data : {formdata : $("#myform").serialize() }, 
      success: function(response){ 
        // do some stuffs with $("#results") 
      } 
     });     

}); 
+1

私は控えめなajax呼び出しを削除せずに好きですが、他の可能性がなければこれを使用します。 – GGO

関連する問題