2

私が書いた次のajaxライブ検索機能を抑制したいと思います。

2文字以上入力した場合のみリクエストが送信されるようにしました。また、ユーザーが必要なものを入力できるように、ajaxを1/4秒間スロットルします。ajaxをsetTimeout関数でラップしましたが、機能しませんでした。

        $('#search').keyup(function() {
            var string = $(this).val();
            if (string.length >= 2) {
                $.ajax({
                    'type': 'GET',
                    dataType: 'html',
                    'url': url,
                    'success': function(data){
                                    // show the search data
                    }
                });                                             
            } else if (string.length <= 1) {
                        // restore page content as of when it was loaded
            }
        });

もう1つ質問する必要があるのは、おそらくajaxの結果をキャッシュする必要があるということです。

4

2 に答える 2

1

Jqueryオートコンプリートのソースコードを見てください(または使用を検討してください)。これは、ユーザーが完了し、キャッシュがあることを確認するために、一時停止後にのみデータを送信します。

于 2011-08-06T03:17:07.303 に答える
1

中のコードだけif (string.length >= 2)

var elem = $(this);
// save newest search
elem.data('search',search)
// clear pending searches
.clearQueue().stop()
// waits
.delay(250)
// runs search
.queue(function() {
    $.ajax({
        'type': 'GET',
        dataType: 'html',
        'url': url,
        'success': function(data){

        // check if can be run
        if(elem.data('search') != search)
            return;

                // show the search data
        }
    });
});
于 2011-08-06T03:20:59.130 に答える