Javascript onKeyUp的jQuery Ajax调用问题

Javascript onKeyUp的jQuery Ajax调用问题,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个搜索表单,其中字段调用一个名为autoSend()onKeyUp的函数。这很好,但随着数据库越来越大,我发现当按下下一个键时,ajax请求仍处于挂起状态,这可能会导致糟糕的搜索结果 我已经实现了我在Stack上找到的解决方案,但这还不够,如果有人搜索“Smith”,那么如果在“t”的键控上请求仍然挂起,它只搜索“smit”,而不是“Smith” 有人能提供建议吗 谢谢 var loading = false; function autoSend() { if (loading

我有一个搜索表单,其中字段调用一个名为autoSend()onKeyUp的函数。这很好,但随着数据库越来越大,我发现当按下下一个键时,ajax请求仍处于挂起状态,这可能会导致糟糕的搜索结果

我已经实现了我在Stack上找到的解决方案,但这还不够,如果有人搜索“Smith”,那么如果在“t”的键控上请求仍然挂起,它只搜索“smit”,而不是“Smith”

有人能提供建议吗

谢谢

var loading = false;

function autoSend() {
    if (loading == false) {
        loading = true;

        $.ajax({
            url:'../customer/search.cfm',
            type:'POST',
            data: $("#searchForm").serialize()
        })
        .success(function(data) {
            $("#reportdata").html(data)
            loading = false;
        })
        .done(function() {
            loading = false;
        });
    }
}

首先,
success()。其次,您可能希望使用计时器取消发送ajax请求的抖动,并中止以前发出的任何ajax请求。但中止客户端并不意味着中止服务器端可能是useful@user3154108即使接受的答案有打字错误,
clearInterval(计时器),也能很好地复制应该是
清除超时(计时器)(现在编辑!)和不处理之前提出的任何请求都应该中止的事实感谢您的输入,这两种方法都帮了大忙@user3154108链接中使用的方法非常有效!首先,
success()。其次,您可能希望使用计时器取消发送ajax请求的抖动,并中止以前发出的任何ajax请求。但中止客户端并不意味着中止服务器端可能是useful@user3154108即使接受的答案有打字错误,
clearInterval(计时器),也能很好地复制应该是
清除超时(计时器)(现在编辑!)和不处理之前提出的任何请求都应该中止的事实感谢您的输入,这两种方法都帮了大忙@user3154108链接中使用的方法非常有效!