2012-04-04 12 views
4

私はちょうど質問したかった。私は、ユーザーが都市を入力できるようにするためのテキスト入力を持っています。jQuery AJAX通話 - 不要な通話をキャンセルすることはできますか?

jQueryは、この入力にリンクされたイベントをkeyupに関連付け、各文字の変更後にAJAXコールを送信しました。

しかし、人が入力している間、多くの不要なAJAXコールが送信されることがわかります。結果の数によっては、ここでパフォーマンスが低下する可能性があります。

新しいコールが行われた場合、AJAXコールをキャンセルする方法はありますか?これを行うより良い方法はありますか?

の例では、ここで見ることができます:www.datingjapan.co

+1

Adam、あなたは関数を呼び出す前に最小の文字制限を課しましたか?私はベストプラクティスは、あなたが望むまで何かを呼ぶことではなく、それを50回呼ぶのではなく、あなたが望んでいない40を取り除くことではないと思います。または、返品データに返答の制限を課すことはできますか? – Blake

+0

通常は2つのコントロールがあります。非常に多くの文字が入力されたあと、ajaxを開始するだけです(3-4)。もう1つは、何も1/2秒間に何も入力されていない場合、ajaxに送信することです。さもなければ、それはあまりにも多くのデータベースにヒットし、ユーザーのやり取りを遅くする可能性があります。 – Rodolfo

答えて

3

あなたはajaxメソッドによって返さ​​オブジェクト(getpostのような他のAJAXの方法があまりにもjqXHRインスタンスを返す)のabort方法を使用することができます

var xhr = $.ajax(opts); 
xhr.abort(); 

オブジェクトは実質的にはXMLHttpRequestの拡張であり、XMLHttpRequest自体もabortのmeth od。

+0

jqueryで以前の呼び出しを中止できます。これはサーバーからサーバーにアボートが送信され、操作がキャンセルされたことを意味しますか?私が同じ投稿要求の複数を送信している場合、それらはすべてキャンセルされるか、キャンセルする方法を特定する方法がありますか? – Adam

+0

@Adam - 'abort'はクライアントからサーバーに送られます。各 'jqXHR'オブジェクトは1つの単一の要求を表します。 'jqXHR'の単一インスタンスの' abort'メソッドを呼び出すと、その単一の要求は取り消されます。 –

関連する問題