Ajax呼叫延迟
问题描述:
我有以下jQuery代码,基本上充当一个输入自动完成。但是,当用户以相当快的速度键入某些内容(或对某些人而言速度正常)时,下拉框会在不同的自动完成之间来回跳动。就像我很快输入“开心”一样,它可能会在“开心”和“幸福”之间闪烁。我认为这是由数据发送和接收之间的延迟引起的。有什么方法可以解决这个问题?Ajax呼叫延迟
var textvalue= $(this).val();
$("#facebookDropdown").html("
loading...
");
$.ajax({
type: "GET",
url: "../invites/afterauth.php",
data: "q=" + textvalue,
success:
function(msg){
$("#facebookDropdown").html(msg)}
})
答
我会放弃你发送的每一个ajax请求。这样他们就不会相互超越。另一种选择是在每次按键后等待几毫秒,以便在发送ajax请求之前查看是否有另一按键。前者响应性更强,但会导致更多的服务器负载,而后者的响应速度较慢,但会导致较少的服务器负载事实上,如果你愿意,你可以做到这两点。
if(previousRequest) {
previousRequest.abort();
}
previousRequest = $.ajax(...
此处了解详情: Abort Ajax requests using jQuery
[?运行时,用户输入完,而不是重点了JavaScript函数(可能重复http://stackoverflow.com/questions/4220126/run-javascript功能当用户完成键入而不是键上) – Blender 2011-12-17 03:11:21