AJAX (Asynchronous JavaScript and XML) — подход к веб-разработке, при котором JavaScript обменивается данными с сервером и обновляет часть страницы без её полной перезагрузки. На сайтах Joomla AJAX применяют, например, для поиска с подсказками, фильтрации каталога и отправки форм.
Как работает AJAX
После действия пользователя скрипт отправляет HTTP-запрос на сервер. Сервер обрабатывает его и возвращает ответ, затем скрипт обновляет нужную область интерфейса. Страница при этом остаётся открытой. Запросы выполняют через fetch или XMLHttpRequest.
Несмотря на XML в названии, обмен не обязан использовать XML. Часто сервер возвращает JSON, HTML или обычный текст. AJAX — не отдельный язык программирования и не конкретная библиотека.
Не любое изменение страницы — AJAX
Открытие вкладки или модального окна может происходить полностью в браузере, без сетевого запроса. Даже изменение счётчика корзины само по себе не доказывает, что данные записаны на сервере. Проверить обмен можно в разделе Network инструментов разработчика браузера.
AJAX в Joomla
Расширения Joomla могут обрабатывать запросы собственными контроллерами. Для ряда задач модулей и плагинов используется интерфейс com_ajax. Конкретный маршрут, формат ответа и проверка доступа зависят от расширения, поэтому произвольный запрос нельзя считать безопасным только из-за использования Joomla.
Операции изменения данных требуют серверной проверки ввода, прав пользователя и защиты от CSRF. Проверка в браузере не заменяет эти меры. Ответы с недоверенными данными нужно безопасно выводить в интерфейс.
Ошибки и удобство использования
Показывайте состояние загрузки и понятный результат операции. Обрабатывайте разрыв соединения и ошибки сервера, не оставляя пользователя с бесконечным индикатором. Защищайте форму от случайной повторной отправки. Обновлённые области должны оставаться доступны с клавиатуры и понятны пользователям экранных дикторов.
Итог
AJAX помогает сайту Joomla обновлять данные без полной перезагрузки. Качество решения зависит от обработки ошибок, доступности интерфейса и проверок на стороне сервера.