当一个新的AJAX调用时,中止之前的AJAX调用?

时间:2012-02-14 22:38:28

标签: ajax

我在用户输入搜索字词时更新搜索结果。

当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;
        }});
    }

如何在制作新请求时取消同一请求的先前实例?

3 个答案:

答案 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”

相关问题