Ajax呼叫延迟

时间:2011-12-17 03:06:57

标签: jquery ajax autocomplete delay

我有以下jquery代码,它基本上充当输入的自动完成。然而,当用户相当快速地键入某些内容时(或者某些人以正常速度输入)时,下拉列表在不同的自动完成之间来回闪烁。就像我很快输入“快乐”一样,它可能会在“快乐”和“快乐”之间闪烁。我认为这是由数据发送和收到之间的延迟造成的。有什么方法可以解决这个问题吗?

var textvalue= $(this).val();
    $("#facebookDropdown").html("
    loading...
    ");
     $.ajax({
    type: "GET",
    url: "../invites/afterauth.php",
    data: "q=" + textvalue,
    success:
    function(msg){ 
    $("#facebookDropdown").html(msg)}   
    })

1 个答案:

答案 0 :(得分:0)

我会中止您之前发送的每个ajax请求。这样他们就不会互相踩踏。另一种选择是在每次按键后等待几毫秒,以便在发送ajax请求之前查看是否有另一个按键。前者响应速度更快但导致服务器负载更多,后者响应速度更慢但服务器负载更少。事实上,如果你愿意,你可以做到这两点。

if(previousRequest) {
  previousRequest.abort();
}

previousRequest = $.ajax(...

更多信息: Abort Ajax requests using jQuery