Рейтинг обговорення:
  • 0 Голосів - 0 Середнє
  • 1
  • 2
  • 3
  • 4
  • 5

Чим краще замінити AJAX у 2026 році?
#1

Усім привіт. Я класичний PHP-бекндер, звик роками писати запити до бекенда на фронті через старий добрий `$.ajax` з jQuery. Але зараз всі кричать, що jQuery мертвий, а `XMLHttpRequest` (який під капотом AJAX) — це милиці з минулого століття.

Підкажіть, чим зараз прийнято замінювати AJAX при взаємодії з PHP бекендом? І чим ці нові інструменти реально кращі, крім того, що 'це модно'?

PHP Developer | Laravel | Symfony | Docker
Відповідь
#2

Привіт! Найстандартніша і найправильніша заміна — це нативний `fetch()`. Тобі більше не потрібно тягнути важку бібліотеку `jQuery` (яка важить ~80kb) тільки заради функції `$.ajax`. `fetch` вбудований у всі сучасні браузери.

Він працює на промісах (Promises), що робить код набагато чистішим: немає оцих вкладених `success` / `error` колбеків, які перетворюються на callback hell.

[code=javascript]
// Сучасний і чистий код
fetch('api/users.php')
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
[/code]

Живу в [object Object]. Прошу не турбувати.
Відповідь
#3

@Yulia_JS, але ж у `fetch` є дурнувата проблема! Він не вважає HTTP-помилки (типу 404 або 500 від мого PHP-скрипта) за помилку `catch`. Мені потрібно вручну перевіряти `res.ok`, інакше проміс вважається успішним. У $.ajax `error` спрацьовував автоматично при 404. Це не виглядає як 'простіше'.

PHP Developer | Laravel | Symfony | Docker
Відповідь
#4

@Andriy_PHP, саме через цю специфіку фетча багато хто (і я теж) обирає **Axios**. Це малесенька бібліотека, яка вирішує всі болі `fetch`.

Вона автоматично відкидає проміс (кидає помилку) при статусах 400-500. Плюс, вона автоматично парсить JSON (не треба писати `res.json()`), має зручні інтерцептори (перехоплювачі запитів — ідеально для додавання CSRF-токенів чи JWT) і вміє відстежувати прогрес завантаження файлів (чого `fetch` довго не вмів).

[code=javascript]
try {
const { data } = await axios.get('api/data.php');
console.log(data); // одразу готовий об'єкт
} catch (error) {
console.error('Сервер повернув помилку:', error.response.status);
}
[/code]

Event Loop крутиться — лавеха мутиться. JS is everything. React / TypeScript / Vite
Відповідь
#5

Хлопці і дівчата, ви сперечаєтесь про інструменти для HTTP-запитів, але забуваєте про архітектуру. Якщо у вас SPA (Single Page Application) або складний дашборд на PHP, заміна AJAX на Fetch/Axios не вирішить головного — це все одно концепція 'запитав-отримав' (Polling).

Якщо потрібно, щоб PHP сервер САМ пушив дані на фронт (наприклад, статуси оплати, нові повідомлення), треба викидати AJAX і переходити на **WebSockets** (через Ratchet чи Swoole у PHP) або хоча б **SSE** (Server-Sent Events).

Кодую на PHP, поки інші сплять.
Відповідь
#6

@Petro_Backend, WebSockets для звичайного CRUD-додатка (отримати таблицю, видалити рядок) — це явний оверінжиніринг. Мені треба піднімати окремий воркер, тримати постійне з'єднання... Заради того, щоб просто форму відправити? Ні, дякую. Для чату згоден, але не для стандартного сайту.

PHP Developer | Laravel | Symfony | Docker
Відповідь
#7

@Andriy_PHP, повністю згодна, для звичайного сайту вебсокети не потрібні. Щодо твого аргументу про `fetch` і `res.ok` — так, це специфіка архітектури мережевих запитів. Зате ти отримуєш повний контроль (через `async / await` код читається вертикально, як синхронний PHP).

Якщо коротко підсумувати для тебе:
1. Пишеш ванільний скрипт без залежностей? => Бери **Fetch API**.
2. Великий проект на Vue/React з купою API-запитів? => Бери **Axios**.
3. Старий проект, де вже є jQuery? => Ну ок, можеш залишити **$.ajax**, нічого з ним не станеться. Але нові так краще не починати.

Живу в [object Object]. Прошу не турбувати.
Відповідь


Перейти на форум:


Користувачі, які переглядають цю тему: Гостей: 1