2011-02-13 17 views
3

私は現在、あまりにもわかりにくい外国語を学んでいるので、私のクラスで使用されている本の言葉を簡単に参照できるように簡単なサイト(http://ianburris.com/armenian/)を作った。私が気付いたことは、「家」のようなものを入力すると、「h」と一致する単語の要求が「ho」の要求後に終了し、「h」の結果が「ho」の結果を上書きすることがある"これは、単語を入力して本当に速くバックスペースを打つと特に顕著になります。すべての文字を消去した後、「英語の単語を入力する」というメッセージが1秒間ポップアップし、最後にAJAXの最後の要求がメッセージの上書きを完了します。 AJAX呼び出しを本質的に取り消す方法はありますか?あるいは、古いものを取り除くために使用できるタイムスタンプを含めるべきですか?jQueryのAJAXコールで競合状態を防ぐ

答えて

5

作成中のajax呼び出しの注文番号を識別するための変数を保持します( など)。最初の呼び出しでは1、2番目の呼び出しでは2、3文字目からはajax呼び出しで3。 そして、ajaxリクエストが完了すると、入力ボックスの値の現在の文字列の長さを確認します。 これらが一致する場合、データは有効であり、ページに書き込むか、拒否します。

例: 値3のajaxリクエストが完了しました。入力ボックスの現在の値= "hou"、hou.length == 3であるため、データが正しく処理されます。

+1

高度なモニタリングが必要な場合には飛行中の値の配列や最後の値自体を格納することもできますが、これはXHRコールバッククロージャでキャプチャするのが本当に簡単です。ちょうどその長さは、時には偽陽性につながる可能性があります: "侯"と "少数"。 –

+0

@pstええ、それを指摘してくれてありがとう。 – DhruvPathak

関連する問題