Prøv denne js-kode i stedet for det du har. Jeg tilføjede forsinkelsesfunktionen, så scriptet venter et bestemt tidsrum, efter at brugeren holder op med at skrive, før den sender anmodningen. Dette forhindrer, at en stor mængde anmodninger sendes til serveren.
<script type="text/javascript">
var delay = (function() {
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
$("#search-box").keyup(
function () {
delay(function () {
var keyword = $("#search-box").val();
var URL = encodeURI("search.php?q=" + keyword);
$.ajax({
url: URL,
cache: false,
type: "GET",
success: function(response) {
$("#results").html(response);
}
});
}, 500);
}
);
</script>