-2

重複の可能性:
候補リストの Jquery POST

私は次のコードを持っていますが、うまく機能します。問題は、ユーザーが単語を書き終えると、スクリプトがポストコールを作成し続け、提案リストを絶えず変更することです。

ユーザーが単語を書き続けると、スクリプトがすべての投稿呼び出しを停止して、最後の呼び出しのみを実行するようにしたいと考えています。

$("#inputString").keydown(function() {
lookup($(this).val());
//alert('a');
});

function lookup(inputString) {
if(inputString.length == 0) {
    $('#suggestions').fadeOut(); // Hide the suggestions box
} else {
    $.post("../jsonshow.php", {q: ""+inputString+""}, function(data) { // Do an AJAX call
        $('#suggestions').fadeIn(); // Show the suggestions box
        $('#suggestions').html(data); // Fill the suggestions box
    });
}
}
4

2 に答える 2

1

$.ajaxの代わりに使用$.postして中止しprevious requestscurrent Request..

このようなもの..

 $("#inputString").keydown(function() {
        lookup($(this).val());
        //alert('a');
    });

    var ajaxRequests;
    function lookup(inputString) {
        if (inputString.length == 0) {
            $('#suggestions').fadeOut(); // Hide the suggestions box
        } 
        else {
            var ajaxReq =
                $.ajax({
                    type: "POST",
                    url: "../jsonshow.php",
                    data: "" + inputString + "",
                    dataType: 'html',
                    beforeSend: function() {
                        var req = ajaxRequests;
                        if (req != null && req != undefined) {
                            req.abort();
                            // Abort the previous requests
                        }
                    },
                    success: function(data) {
                        $('#suggestions').html(data).fadeIn();
                        // Fill the suggestions box
                    },
                    complete : function(){
                         ajaxrequests = null;
                    }
                });
            ajaxRequests = ajaxReq;
        }
    }
于 2012-12-12T00:00:33.377 に答える
-1

ユーザーがスペースをヒットしたときだけ ajax を呼び出すのはどうですか?

$("#inputString").keydown(function(e) {
if(e.keyCode == 32) lookup($(this).val());

});

于 2012-12-11T23:58:57.930 に答える