← Все вопросы

Что такое XMLHttpRequest и как сделать AJAX-запрос?

Задан 24 месяца назад314 просмотров2 ответа
8

Встречаю в коде XMLHttpRequest и слово AJAX. Что это, зачем нужно и как отправить простой запрос на сервер без перезагрузки страницы?

2 ответа

14
✓ Принятый ответ — помог автору

XMLHttpRequest (XHR) — это встроенный в браузер объект для отправки HTTP-запросов из JavaScript без перезагрузки страницы. Именно на нём исторически строился AJAX (Asynchronous JavaScript And XML), хотя сегодня данные чаще гоняют в JSON, а не XML.

Простой GET-запрос:

const xhr = new XMLHttpRequest();
xhr.open('GET', '/api/users');

xhr.onload = function () {
  if (xhr.status === 200) {
    const data = JSON.parse(xhr.responseText);
    console.log(data);
  } else {
    console.error('Ошибка', xhr.status);
  }
};

xhr.onerror = function () {
  console.error('Сбой сети');
};

xhr.send();

Логика: open() настраивает метод и URL, вешаем обработчики onload/onerror, затем send() отправляет. Ответ лежит в responseText.

Смысл AJAX в том, что страница остаётся на месте, а в фоне подгружаются данные — так работают ленты, автодополнение, подгрузка комментариев и т. д.

7

Сейчас в новом коде XMLHttpRequest почти не пишут руками — вместо него современный fetch, он короче и работает на промисах:

fetch('/api/users')
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));

Или с async/await:

const res = await fetch('/api/users');
const data = await res.json();

XHR полезно понимать (легаси-код, прогресс загрузки файлов), но для новых проектов бери fetch.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект