2012-02-14 2 views
0

사용자가 검색어를 입력 할 때 검색 결과를 업데이트하고 있습니다.새 AJAX 콜을 만들 때 이전 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; 
     }}); 
    } 

?

답변

2

"JQuery와 아약스 큐"에 대한 구글 아약스 큐 플러그인을 찾아 (또는 쓰기) 할 필요가 간단한 카운터로 :

<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 패킷의 시퀀스 번호와 매우 비슷합니다.

관련 문제