可能性の重複:Jquery .ajaxを使用して機内AJAXリクエストをキャンセルしますか?
$("#friend_search").keyup(function() { if($(this).val().length > 0) { obtainFriendlist($(this).val()); } else { obtainFriendlist(""); } }); function obtainFriendlist(strseg) { $.ajax({ type: "GET", url: "getFriendlist.php", data: "search="+strseg, success: function(msg){ UIDisplayFriends(msg); } }); }
基本的には、keyUpイベントは、関数obtainFriendlistが戻る前に解雇された場合:ここでは
Kill Ajax requests using JavaScript using jQuery
は、私が働いている単純なコードです結果(そしてUIDisplayFriends(msg)をトリガする)、私は飛行中のリクエストをキャンセルする必要があります。私が持っていた問題は、彼らがbui ld up、そして突然関数UIDisplayFriendsが繰り返し起動されます。
はどうもありがとうございました、とアドバイスも変数を使用することについて、あなたはアヤックスのためbeforeSend(jqXHR、設定)オプションを使用して、使用してtrueに設定されていること、isLoadingを言う方法
私はあなたが遅れを取っていることが好きです、それはいいです。しかし、ユーザーが遅いライターであれば、リクエストが積み重なり、すべてのキーストロークで新しいAjaxリクエストがトリガーされるというリスクはまだありませんか? –
これは依然として危険なので、両方の戦略を適用して古いクエリをキャンセルし、サーバーコールを減らすための上記の方法を適用することをお勧めします。 3番目の画面では、依然として出力が要求と一致していることが検証されます。 –
優れています。ありがとう、これは非常に有益です – TaylorMac