2014-10-13 2 views
0

PHP 스크립트에서 검색 결과를 얻기 위해 ajax를 사용하는 텍스트 입력을 만들려고합니다. 기본적으로 스크립트는 각 문자를 1 씩 PHP로 보냅니다. PHP는 각 문자의 데이터베이스에서 결과를 쿼리해야합니다.jQuery 매 x 초마다 AJAX를 실행하십시오.

대신 "W", "Wo", "Wor", "Wor", "Wo", "Wo", " 워드".

나는 그것을 위해 window.SetTimetout을 사용하려고하지만, 그것은 단지 이초 늦게 그것을 검색 실행을 만들지 만, 문자는 여전히 1

$("#search").keyup(function(e) { 
    var keyword = $("#search").val(); 
    window.setTimeout(function() { 
     $.ajax({ 
      url: "GetItemList.php?search="+keyword, 
      success: function(result) { 
       $(".left").html(result); 
      } 
     }); 
    },2000); 
}); 
+0

@chsh하지만 1 초마다 #search의 내용을 캡처 한 다음 PHP로 보내려면 어떻게해야합니까? – ibab

+0

https://code.google.com/p/jquery-debounce/ – epascarello

답변

3

Clear Timeout

var lastTimeout = null; 
$("#search").keyup(function(e) { 
    var keyword = $("#search").val(); 
    if (lastTimeout) 
     clearTimeout(lastTimeout) 
    lastTimeout = window.setTimeout(function() { 
     $.ajax({ 
      url: "GetItemList.php?search="+keyword, 
      success: function(result) { 
       $(".left").html(result); 
      } 
     }); 
    },2000); 
    }); 
+0

감사합니다. 이것은 완벽하게 작동합니다. 최대한 빨리 asnwer로 표시하겠습니다. – ibab

2
에 의해 1 전송됩니다

새 타임 아웃을 생성하기 전에 이미 타임 아웃이 활성화되어 있는지 확인해야합니다. 이런 식으로 뭔가 : 당신이 10 초 동안 지속적으로 계속 입력한다면

var myTimeout = null; 

$("#search").keyup(function(e) { 
    var keyword = $("#search").val(); 

    if(myTimeout != null) { 
     myTimeout = window.setTimeout(function() { 
     $.ajax({ 
      url: "GetItemList.php?search="+keyword, 
      success: function(result) { 
       $(".left").html(result); 
      myTimeout = null; 
      } 
     }); 
     },2000); 
    } 
}); 

이 방법은, 당신은 4 ~ 5 요청을 끝낼 것이다는 1 매 2 초 정도 총.

관련 문제