2012-02-14 5 views
0

Я обновляю результаты поиска, когда пользователь вводит поисковый запрос.Отменить предыдущий вызов 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-пакетах.

Смежные вопросы