@Alexis_D

Как сделать подгрузку поискового запроса, ajax?

Доброго времени суток. У меня есть поиск по базе данных, и, допустим, в ней находятся 60 000 тыс. строк, сделал так, что сначала выводил по 100 записей, при загрузке первых 100, выводит нормально по запросу, но когда уже идет обращение к ajax для загрузки след. 100 записей, он начинает выдавать не по запросу.
Запрос на ajax
$(document).ready(function(){
var inProgress = false;
/* С какой статьи надо делать выборку */
var startFrom = 100;

  $(window).scroll(function() {
/* Если высота окна + высота прокрутки больше или равны высоте всего документа и ajax-запрос в настоящий момент не выполняется, то запускаем ajax-запрос */
    if($(window).scrollTop() + $(window).height() >= $(document).height() - 200 && !inProgress) {
      $.ajax({
          /* адрес файла-обработчика запроса */
          url: 'search_ajax.php',
          method: 'POST',
          /* данные, которые мы передаем в файл-обработчик */
          data: {"startFrom" : startFrom},
          beforeSend: function() {
          inProgress = true;
          }}).done(function(data){
          /* Преобразуем результат, пришедший от обработчика - преобразуем json-строку обратно в массив */
          data = jQuery.parseJSON(data);
          if (data.length > 0) {
          $.each(data, function(index, data){
          /* Отбираем по идентификатору блок со статьями и дозаполняем его новыми данными */
          $(".result_search_table").append("<tr><td>" + data.name + "</td> <td>" + data.nameScore + "</td> <td>" + data.organization + "</td></tr>");
          });
          inProgress = false;
          startFrom += 100;
          }});
      }
  });
});

Обработчик ajax-запроса
$startFrom = $_POST['startFrom'];
   $res = mysqli_query($connect, "SELECT * FROM `test_excel` WHERE `noSpaceName` LIKE '%".$startFrom."%' OR `nameScore` LIKE '%".$startFrom."%' OR `organization` LIKE '%".$startFrom."%' LIMIT {$startFrom}, 100");

   $resSeacrh = array();
   while ($row = mysqli_fetch_assoc($res)) {
       $resSeacrh[] = $row;
   }
   echo json_encode($resSeacrh);
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Yan-s
Отлаживайте работу кода, определите причину, изолируйте и исправьте ее.

Это именно ваша работа. Для начала вынести SQL в отдельную переменную и наблюдайте за ее значением, чтобы понять, что не так.
Ответ написан
Комментировать
@iljaGolubev
что вы тут ждёте то?
LIKE '%".$startFrom."%' ...  LIMIT {$startFrom}, 100
LIKE '%101%' ...  LIMIT 101, 100
-- или
LIKE '%learn sql%' ...  LIMIT learn sql, 100</code
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы