2010-12-27 10 views
1

私は若干修正されたjQueryオートコンプリートプラグインを使用しています。完了するまでAJAXリクエストを無効にしますか?

これは単純に、いくつかの配列の代わりにMySQLデータベースからJSONオブジェクトをフェッチするように変更されています。

しかし、私は入力フィールドをクリックすると、以前のものと同じ新しい要求を送信することに気づきました。 もう一度クリックすると、すばやく多くのクイッククリックがすばやく問題を形成し始めました。 1秒間に無制限のリクエストを送信するのを止めるものは何もありません。 入力フィールドに最後のリクエストと同じ文字列が含まれている場合、新しいリクエストを送信しないようにするにはどうすればよいですか?

そして、これは私がから変更プラグインを得たところである:

http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

+0

「クリックする」!いくつかのコードを表示できますか?あなたは 'change'イベントの代わりに入力フィールドの' Click'イベントにajaxをつけていますか?とにかく非推奨のプラグインを使用する理由は? – ifaour

答えて

1

ようにするには、要求が進行中で、積極的であるかどうかを知っているだけフラグにミューテックスsemphoreを配置する必要があります新しい要求をトリガーするのではなく、アクティブな要求があるかどうかをチェックし、そうでない場合は続行します。

var inProgress = false; 

$('selector').click(function() { 
    if (!inProgress) { 
    inProgress = true; 
    ajaxRoutine(); 
    } 
}); 

function ajaxRoutine() { 
    ... 
    inProgress = false; 
    return; 
} 
+1

エラー状態でも 'inProgress'をfalseに設定することを忘れないでください。 –

+0

@Byron Whitlock:すべての終了条件はフラグを設定する必要があります。 – Orbling

関連する問題