2012-02-14 46 views
0

我正在更新搜索結果,因爲用戶鍵入搜索詞。當新的AJAX調用發生時,放棄以前的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; 
     }}); 
    } 

如何cancell同樣的請求的更早的例子,當我提出一個新的?

回答

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

您可以在URL中傳輸一個計數器,並將計數器發送回去,如果它們不是來自最新的迭代,則忽略結果。很像UDP數據包中的序列號。