使用jQuery进行实时搜索时的AJAX超时

时间:2015-03-05 10:07:26

标签: jquery ajax

您好我该如何设置计时器?我尝试了超时:3000但它不起作用这是我的代码:

$(document).ready(function(){
    $("#Name").keyup(function(){
        $.ajax({
        timeout: 3000,
        type: "POST",
        url: "search2.php",
        data:'name='+$(this).val(),
        })
        .fail(function() {
            console.log("error");
        }).success(function(response){
            console.log(response);
        });
    });
});

它一直为我输入的每个字符调用ajax调用。

非常感谢

2 个答案:

答案 0 :(得分:4)

您可以使用超时去除键盘事件,例如:

$(document).ready(function () {
    var timeout;
    $("#Name").keyup(function () {
        clearTimeout(timeout);
        timeout = setTimeout(livesearch.bind(this), 3000); 
        // or to support IE8: timeout = setTimeout($.proxy(livesearch, this), 3000);
    });

    function livesearch() {
        $.ajax({
            type: "POST",
            url: "search2.php",
            data: 'name=' + this.value,
        }).fail(function () {
            console.log("error");
        }).success(function (response) {
            console.log(response);
        });
    }
});

答案 1 :(得分:3)

您可以使用setTimeout来延迟搜索,例如:

var timeout;
$("#Name").keyup(function() {
    var $this = $(this);
    if(timeout) {
        clearTimeout(timeout);
    }
    timeout = setTimeout(function() {
        $.ajax({
                type: "POST",
                url: "search2.php",
                data: 'name=' + $this.val(),
            })
            .fail(function() {
                console.log("error");
            }).success(function(response) {
                console.log(response);
            });
    }, 3000);
});