Перейти до основного контенту

Як зробити Ajax запит на JavaScript: керівництво і приклади коду

11 хв читання
1087 переглядів

Асинхронні запити веб-сторінки дозволяють обмінюватися даними між браузером і сервером без необхідності перезавантаження сторінки. Це значно покращує користувальницький досвід і дозволяє створювати більш динамічні та інтерактивні веб-додатки.

JavaScript надає багато способів зробити Ajax запити, але найбільш поширеним і зручним є використання вбудованого об'єкта XMLHTTPRequest. XMLHTTPRequest дозволяє виконувати асинхронні HTTP запити і отримувати відповіді в різних форматах, таких як HTML, XML, JSON та інші.

У цій статті представлено докладний посібник зі створення Ajax запитів на JavaScript, а також приклади коду, які допоможуть вам розібратися в цій потужній технології. Ви дізнаєтеся, як відправляти запити на сервер, обробляти відповіді, а також як працювати з різними типами даних і отримувати оновлення в режимі реального часу без необхідності перезавантаження сторінки.

Що таке Ajax запит?

Ajax (англ. Asynchronous JavaScript and XML) - це набір технологій, що дозволяють здійснювати обмін даними між сервером і клієнтом без перезавантаження всієї сторінки. Ajax запити дозволяють завантажувати і відправляти дані у фоновому режимі, не перериваючи роботу користувачів.

Основний принцип роботи Ajax полягає в тому, що клієнтський скрипт виконує HTTP-запит до сервера, використовуючи JavaScript, і отримує відповідь у форматі XML або JSON. Після отримання відповіді, клієнтський скрипт може оновити вміст сторінки, внести зміни або виконати інші дії без перезавантаження всієї сторінки.

Використання Ajax запитів підвищує продуктивність веб-додатків, покращує користувальницький досвід і дозволяє створювати інтерактивні та динамічні веб-сайти.

Навіщо потрібно використовувати Ajax?

Основною причиною використання Ajax є те, що він дозволяє асинхронно отримувати доступ до сервера, тобто не зупиняючи роботу веб-сторінки. Наприклад, при відправці форми на сервер, сторінка не перезавантажується повністю, а тільки оновлюється необхідна частина. Це дозволяє скоротити час очікування і зробити взаємодію з сайтом більш плавним і зручним для користувача.

Іншим важливим аспектом використання Ajax є можливість асинхронного завантаження даних із сервера. Замість того, щоб завантажувати всі дані відразу при завантаженні сторінки, можна завантажувати тільки ті дані, які необхідні на даний момент. Це виконується шляхом відправки запитів на сервер з використанням JavaScript, і оновлення вмісту сторінки за допомогою отриманих даних. Такий підхід дозволяє скоротити обсяг переданих даних і поліпшити продуктивність сайту.

Використання Ajax також дозволяє створювати динамічні веб-сторінки та інтерактивні програми. Наприклад, при зміні значення поля введення, можна відправити запит на сервер для отримання пов'язаних даних і оновити вміст сторінки динамічно. Таким чином, веб-додаток стає більш інтерактивним і чуйним, що підвищує задоволеність користувачів і підвищує ефективність роботи сайту.

Загалом, використання Ajax відкриває багато можливостей для покращення взаємодії з веб-сайтами та створення інтерактивних додатків. Це дозволяє оновлювати вміст сторінки без перезавантаження, асинхронно завантажувати дані з сервера та створювати динамічні веб-сторінки. Все це робить веб-сайти більш функціональними та зручними для користувачів.

Основи Ajax запиту

За допомогою Ajax можна звертатися до сервера і отримувати оновлення даних без необхідності перезавантаження всієї веб-сторінки.

Основними елементами Ajax запиту є:

  • Об'єкт XMLHttpRequest, який здійснює з'єднання з сервером і відправляє запити;
  • Методи об'єкта XMLHttpRequest, наприклад, open () для налаштування запиту або send () для надсилання запиту;
  • Обробники подій, які дозволяють відстежувати статус запиту та обробляти отримані дані.

Щоб виконати Ajax запит, необхідно:

  1. Створити екземпляр об'єкта XMLHttpRequest за допомогою конструктора new XMLHttpRequest() ;
  2. Використовувати методи об'єкта XMLHttpRequest, щоб налаштувати і відправити запит;
  3. Визначити обробники подій для відстеження статусу запиту та обробки отриманих даних.

При успішному виконанні запиту, дані зазвичай повертаються в форматі, який може бути оброблений за допомогою JavaScript, наприклад, JSON або XML.

Як створити Ajax запит на JavaScript?

Для створення Ajax запиту на JavaScript, дотримуйтесь цих простих кроків:

1. Створіть XMLHttpRequest-об'єкт:

let xhr = new XMLHttpRequest();

2. Відкрийте з'єднання з сервером:

xhr.open('GET', 'url', true);

Замініть 'GET' на 'POST', якщо ваш запит є POST-запитом. Замініть ' url ' на URL-адресу вашого сервера.

3. Встановіть обробник події на успішне виконання запиту:

xhr.onload = function()  >;

4. Надішліть запит на сервер:

xhr.send();

Якщо ваш запит є POST-запитом, Ви можете надіслати дані, передавши їх методу send(). Наприклад, щоб надіслати дані як JSON, використовуйте:

xhr.send(JSON.stringify(data));

5. Обробіть відповідь сервера:

xhr.onload = function() >;

Отримана відповідь міститься у властивості responseText або responseXML об'єкта XMLHttpRequest, залежно від типу даних, які сервер повернув.

Тепер у вас є базове керівництво для створення Ajax запиту на JavaScript. Ви можете використовувати цю техніку для оновлення даних у режимі реального часу, надсилання форм, отримання даних із сервера тощо.

Як відправити Ajax запит на сервер?

Щоб відправити Ajax запит на сервер за допомогою JavaScript, потрібно використовувати функцію XMLHttpRequest. Ось простий приклад:

// Создаем новый объект XMLHttpRequestlet xhr = new XMLHttpRequest();// Устанавливаем метод и URL для запросаxhr.open('GET', 'https://example.com/api/data', true);// Устанавливаем обработчик события загрузкиxhr.onload = function()  >;// Отправляем запросxhr.send();

У цьому прикладі ми створюємо новий об'єкт XMLHttpRequest, встановлюємо метод і URL для запиту, а потім надсилаємо запит методом send(). Коли сервер відправить відповідь, викликається функція onload і можна обробити отримані дані.

Також можна відправити POST запит з даними. Наприклад:

// Создаем новый объект XMLHttpRequestlet xhr = new XMLHttpRequest();// Устанавливаем метод и URL для запросаxhr.open('POST', 'https://example.com/api/save', true);// Устанавливаем заголовок Content-Typexhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');// Устанавливаем обработчик события загрузкиxhr.onload = function()  >;// Отправляем запрос с даннымиxhr.send('name=John&age=30');

У цьому прикладі ми надсилаємо POST запит за URL 'https://example.com/api/save' з даними 'name=John & age = 30'. Для цього встановлюємо заголовок Content-Type як 'application/x-www-form-urlencoded' і викликаємо метод send() з даними.

Таким чином, за допомогою об'єкта XMLHttpRequest і методів open() і send() можна легко відправити Ajax запит на сервер з використанням JavaScript.

Як отримати відповідь від сервера в Ajax запиті?

Отримання відповіді від сервера в Ajax запиті здійснюється за допомогою колбек-функцій. Всі події, пов'язані з Ajax запитом, обробляються всередині цих функцій. Існує кілька способів отримати відповідь від сервера:

1. Використання властивості onreadystatechange:

При використанні властивості onreadystatechange прослуховується зміна властивості readyState, яке визначає поточний стан запиту. Перша перевірка стану readyState відбувається в методі send(). Якщо поточний стан запиту став рівним 4 (XMLHttpRequest.DONE), то значить запит завершено, і можна отримати відповідь від сервера. Перевіряємо статус відповіді, який зберігається у властивості status. Якщо статус відповіді дорівнює 200, то запит пройшов успішно, і можна отримати відповідь сервера за допомогою властивості responseText.

2. Використання методу fetch():

Метод fetch() дозволяє здійснювати мережеві запити і повертає ПРОМІС, який містить відповідь від сервера. Щоб отримати відповідь, можна використовувати метод json() або text() всередині колбек-функції промиса. Метод json() перетворює отримані дані в JavaScript об'єкт, а метод text() повертає дані у вигляді тексту.

Виберіть відповідний спосіб отримання відповіді від сервера залежно від ваших потреб та вимог проекту.

Приклади Ajax запитів

1. GET запит:

Для відправки GET запиту використовується метод GET. Приклад:

const xhr = new XMLHttpRequest();xhr.open('GET', 'https://api.example.com/data', true);xhr.onreadystatechange = function() >;xhr.send();

2. POST запит:

Для відправки POST запиту використовується метод POST. Приклад:

const xhr = new XMLHttpRequest();xhr.open('POST', 'https://api.example.com/data', true);xhr.setRequestHeader('Content-Type', 'application/json');xhr.onreadystatechange = function() >;const data = JSON.stringify(< name: 'John', age: 30 >);xhr.send(data);

3. Завантаження файлу:

Для завантаження файлу на сервер використовується метод POST і об'єкт FormData. Приклад:

const xhr = new XMLHttpRequest();xhr.open('POST', 'https://api.example.com/upload', true);xhr.onreadystatechange = function() >;const formData = new FormData();formData.append('file', fileInput.files[0]);xhr.send(formData);

4. JSONP запит:

JSONP (JSON with Padding) - це метод надсилання даних на інший домен, як правило, як сценарій. Приклад:

function handleResponse(data) const script = document.createElement('script');script.src = 'https://api.example.com/data?callback=handleResponse';document.body.appendChild(script);

5. Fetch API:

Fetch API надає більш сучасний і гнучкий спосіб виконання Ajax запитів. Приклад:

fetch('https://api.example.com/data').then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error));

Приклад надсилання даних на сервер за допомогою Ajax

Для надсилання даних на сервер за допомогою Ajax потрібно виконати кілька кроків:

  1. Створити XMLHttpRequest об'єкт
  2. Встановити метод запиту та URL
  3. Вказати асинхронність запиту
  4. Встановити заголовки запитів
  5. Вказати обробник події onreadystatechange
  6. Надіслати запит на сервер

Наведений нижче код демонструє приклад надсилання даних на сервер за допомогою Ajax:

JavaScript:

let xhr = new XMLHttpRequest();let url = 'https://example.com/api/data';let method = 'POST';xhr.open(method, url, true);xhr.setRequestHeader('Content-Type', 'application/json');xhr.setRequestHeader('Authorization', 'Bearer ' + token);xhr.onreadystatechange = function() >;let data = ;xhr.send(JSON.stringify(data));

У цьому прикладі ми створюємо об'єкт XMLHttpRequest і встановлюємо метод запиту та URL. Потім ми вказуємо асинхронність запиту та встановлюємо кілька заголовків, включаючи тип вмісту та маркер авторизації.

Нарешті, ми створюємо об'єкт з даними, які ми хочемо надіслати на сервер, і викликаємо метод send() для надсилання запиту.

Цей приклад демонструє базовий підхід до надсилання даних на сервер за допомогою Ajax. Однак у реальному світі ви, ймовірно, захочете додати обробку можливих помилок і використовувати методи зворотного виклику для більш гнучкої обробки відповіді від сервера.

Приклад отримання даних із сервера за допомогою Ajax

Для отримання даних з сервера за допомогою Ajax необхідно виконати наступні кроки:

  1. Створити об'єкт XMLHttpRequest.
  2. Встановити обробник події onreadystatechange для об'єкта XMLHttpRequest, щоб виконати дії по отриманні відповіді від сервера.
  3. Надіслати запит на сервер за допомогою методу open і send.
  4. Обробити отримані дані і вивести їх на сторінку.

Для відправки запиту на сервер використовується метод open, в якому вказується метод запиту (GET, POST і ін.) і URL сервера. Потім запит надсилається за допомогою методу send ().

Перш ніж використовувати цей приклад, потрібно замінити "/api/data" на фактичну URL-адресу вашого сервера.