-2

可能重复:
建议列表的 Jquery POST

我有下一个代码,它运行良好,问题是当用户写完单词时,脚本会不断创建帖子调用并不断更改建议列表。

我想做一些事情,如果用户继续写一个单词,脚本会停止所有的 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 requests并仅发送current 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 回答