1

私は定期的な選択リストを持っています。

<select name="pets">
    <option>Dog</select>
    <option>Cat</select>
</select>

選択したアイテムが変更されたら、値を更新するためにajax呼び出しを生成する必要があります。私の問題は、ユーザーがキーボードを使用して値をシャッフルすると、changeイベントが大量に発生することです。したがって、サーバーへの多くのajax呼び出しを意味します。そのアプローチは私には正しくないようです。

ぼかしまたはフォーカスを使用すると、ユーザーは値を変更でき、次のクリックで別のページに移動して、ajaxリクエストを終了できなくなります。

このような状況に対処する最善の方法はわかりません。

4

3 に答える 3

0

setIntervalたとえば、AJAX呼び出しを使用しclearIntervalてわずかに遅らせることができます。たとえば、ユーザーがその時間内に再度変更した場合は、前の間隔をクリアし、新しい間隔を設定します。

選択が安定していると思われる場合は、AJAX呼び出しが発生します。

これらのメソッドの使用方法の例については、ここを参照してください。http://www.w3schools.com/js/js_timing.asp

于 2012-12-05T14:40:44.843 に答える
0

ajax呼び出しを実行できるのは、ユーザーがしばらく操作を行わなかった場合のみです。

$(document).ready(function(){
    var timer;
    $('select').change(function(){
        var self = this;
        window.clearTimeout(timer);
        timer = window.setTimeout(function(){
            delayedOnChange.apply(self, arguments);
        }, 300);
    });
    var delayedOnChange = function() {
        console.log($(this).val());
        // ajax call here
    }
}); 
于 2012-12-05T14:41:31.007 に答える
0

オン.blurが最良のオプションです。ほとんどのブラウザーは、同期 ajax 要求を実行するときに、要求が完了するまでロックします。サーバーページとjqueryの間でハンドシェイクを同期する必要がない場合は、とにかくこれを使用しません。

デフォルトでは、jquery の ajax リクエストは非同期であり、一度リクエストを開始すると、固執して応答を待つ必要はありません。

http://api.jquery.com/jQuery.ajax/

于 2012-12-05T14:51:18.457 に答える