Как реализовать поиск с использованием AJAX?

Как обновить информацию на сервере без перезагрузки страницы после отправки данных из поля поиска?
  • 29 сентября 2023 г. 12:08
Ответы на вопрос 2
Для реализации поиска с использованием AJAX вам понадобится HTML-страница с формой поиска и соответствующий JavaScript код.

1. Создайте HTML-форму с полем для ввода поискового запроса:

```html
<form id="searchForm">
  <input type="text" id="searchInput" autocomplete="off">
  <input type="submit" value="Найти">
</form>
<div id="searchResults"></div>
```

2. Напишите JavaScript код для обработки отправки формы и выполнения AJAX-запроса:

```javascript
// Находим элементы формы и результатов поиска по их ID
const searchForm = document.getElementById("searchForm");
const searchInput = document.getElementById("searchInput");
const searchResults = document.getElementById("searchResults");

// Функция для выполнения AJAX-запроса и обновления результатов поиска
function search() {
  // Получаем значение из поля ввода
  const query = searchInput.value;

  // Создаем новый XMLHttpRequest-объект
  const xhr = new XMLHttpRequest();

  // Настраиваем обработчик события получения ответа от сервера
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
      // Очищаем результаты поиска
      searchResults.innerHTML = "";

      // Получаем ответ от сервера в формате JSON
      const response = JSON.parse(xhr.responseText);

      // Обрабатываем результаты поиска
      response.forEach(function(result) {
        const resultElement = document.createElement("p");
        resultElement.textContent = result;
        searchResults.appendChild(resultElement);
      });
    }
  };

  // Отправляем AJAX-запрос на сервер
  xhr.open("GET", "/search?query=" + encodeURIComponent(query), true);
  xhr.send();
}

// Назначаем обработчик события отправки формы
searchForm.addEventListener("submit", function(event) {
  event.preventDefault(); // Отменяем отправку формы
  search(); // Выполняем поиск
});
```

3. На серверной стороне вам нужно реализовать обработчик для AJAX-запроса и возвращение результатов поиска в формате JSON. Это может выглядеть примерно следующим образом, используя Node.js и Express:

```javascript
const express = require("express");
const app = express();

// Обработчик AJAX-запроса на сервер
app.get("/search", function(req, res) {
  const query = req.query.query;

  // Здесь производим поиск по заданному запросу, получаем результаты

  const results = [...]; // Результаты поиска в виде массива строк

  // Отправляем результаты поиска в формате JSON
  res.json(results);
});

app.listen(3000, function() {
  console.log("Сервер запущен на порту 3000");
});
```

Теперь при отправке формы или нажатии на кнопку "Найти" будет выполняться AJAX-запрос на сервер, обработчик AJAX-запроса выполнит поиск на сервере и вернет результаты, которые будут обновлены на странице без ее перезагрузки.
Изучите, что такое DOM и с чем связан его использование.
Похожие вопросы