Ajax-скрипт плохо работает при вводе (ввод)

#javascript #ajax

#javascript #ajax

Вопрос:

У меня есть ввод, используемый для поиска. Пользователь начинает печатать, и во время ввода в таблице отображается ряд результатов, связанных с введенной строкой.

Мой HTML:

 <input type="text" id="searchinput" onkeyup="Search()" placeholder="Search...">
  

Моя функция Javascript:

 function Search() {
  var value = $("#searchinput").val().toLowerCase().trim();
  if (value == '') {
    $("div#results").html('');
  } else {
    $.ajax({
      type: 'post',
      url: 'getresults.php',
      data: {
        values: value
      },
      success: function(response) {
        $("div#results").html(response);
      }
    });
  }
}
  

Если пользователь быстро вводит поисковые запросы, пользователь получает желаемые результаты. Если вы вводите медленно, он получает результаты, и через пару секунд он как будто ломается и показывает другие результаты (возможно, от ранее нажатой клавиши?).

Есть идеи?

Комментарии:

1. Для этого используйте функцию автозаполнения jquery.

Ответ №1:

Вы можете попробовать выполнить деблокирование, это приведет к отправке запроса только после 250 мс бездействия.

 $.debounce(250, function(e) {
    console.log("It works!");
})
  

Вот функция debounce, на которую я ссылался
http://benalman.com/code/projects/jquery-throttle-debounce/jquery.ba-throttle-debounce.js