我在用户输入搜索字词时更新搜索结果。
当2个ajax调用发生时,有时最后一个data_response
会被带回。我需要确保不会发生这种情况。
这是我的代码:
function filterCities(search) {
$.ajax({type:'GET',url:'/ventas/theme/citiesContainer.php',data: "search=" + search,
success:function(data_response){
results.innerHTML = data_response;
}});
}
如何在制作新请求时取消同一请求的先前实例?
答案 0 :(得分:2)
您可以在URL中传输计数器,然后重新发送计数器,如果它们不是来自最新的迭代,则忽略结果。与UDP数据包中的序列号非常相似。
答案 1 :(得分:2)
这是一个简单的计数器解决方案:
<script>
var counter = 0;
function filterCities(search,c) {
$.ajax({type:'GET',url:'/results.php',data: "search=" + search,
success:function(data_response){
if(c == counter) { // Only update if it's data_response from last call
results.innerHTML = data_response;
}
}});
}
</script>
<input type="text" onkeyup="counter++; filterCities(this.value,counter);">
答案 2 :(得分:0)
你需要寻找一个ajax队列插件(或写一个)
How do I go about getting the Ajax Queue plugin working in jQuery 1.3?
在SO上搜索更多内容,谷歌搜索“jquery ajax queue”