我有以下jquery代码,它基本上充当输入的自动完成。然而,当用户相当快速地键入某些内容时(或者某些人以正常速度输入)时,下拉列表在不同的自动完成之间来回闪烁。就像我很快输入“快乐”一样,它可能会在“快乐”和“快乐”之间闪烁。我认为这是由数据发送和收到之间的延迟造成的。有什么方法可以解决这个问题吗?
var textvalue= $(this).val();
$("#facebookDropdown").html("
loading...
");
$.ajax({
type: "GET",
url: "../invites/afterauth.php",
data: "q=" + textvalue,
success:
function(msg){
$("#facebookDropdown").html(msg)}
})
答案 0 :(得分:0)
我会中止您之前发送的每个ajax请求。这样他们就不会互相踩踏。另一种选择是在每次按键后等待几毫秒,以便在发送ajax请求之前查看是否有另一个按键。前者响应速度更快但导致服务器负载更多,后者响应速度更慢但服务器负载更少。事实上,如果你愿意,你可以做到这两点。
if(previousRequest) {
previousRequest.abort();
}
previousRequest = $.ajax(...