2

ユーザーの入力内容に基づいて結果を返す Web サイトのライブ検索を構築しています。ユーザーが入力を終了したときにのみリクエストを送信したい。

タイマーを使用していくつかの実装を試してみましたが、underscore.js の debounce メソッドも使用しましたが、常に同様の結果が得られているようです。

入力している間、入力が完了するまでリクエストが遅れます。しかし、すべての入力がキューに入れられたかのように起動するようです。たとえば、「bikes」と入力すると、結果は次のように返されます。

b

bi

bik

bikes

そのため、検索結果のストリームが得られます。

これは、アンダースコアjsを使用した現在の実装です

$('#search_term').on('keyup', _.debounce(function (e) {

       $.ajax({
            type: "GET",
             url: "quicksearch.php",
            data: { search_term:$('#search_term').val()},
            success: function(msg){
              $('#quick_search_results').html(msg).slideDown();
            }
    });

}, 100));

誰にもアイデアはありますか?

4

2 に答える 2

6

おそらく、ユーザーは十分な速さで入力することができません。wait例では、関数のパラメーターを100 ミリ秒より長く設定します_.debounce(仕様を参照してください: _.debounce(function, wait, [immediate])

$('#search_term').on('keyup', _.debounce(function (e) {
   $.ajax({
        type: "GET",
        url: "quicksearch.php",
        data: { search_term:$('#search_term').val()},
        success: function(msg){$('#quick_search_results').html(msg).slideDown();}
   });
}, 300)); // < try 300 rather than 100
于 2013-09-24T16:34:19.800 に答える