AJAX в Joomla 3.2
В Joomla 3.2 появился новый компонент com_ajax, с помощью этого компонента можно выполнять AJAX запросы в модули или плагины!
В этой статье мы рассмотрим как правильно использовать этот компонент!
Для начала сразу надо понять что мы не сможем делать запрос в любой модуль либо плагин!
Запросы мы можем делать только в те модули в которых есть метод getAjax, и метод onAjaxИмяПлагина
Для начала рассмотрим как нам сделать AJAX запрос в модуль!
Итак нам нужно в строке запроса сделать ссылку вида:
index.php?option=com_ajax&module=module_name&format=raw&var1...
Рассмотрим переменные в строке адреса:
- option=com_ajax - это строка неизменная и есть обязательным параметром, означает что мы используем компонент com_ajax
- module=module_name - в этой строке мы говорим что будем получать модуль, module_name - имя модуля к которому мы хотим достучаться!
Важно! имя модуля нужно указывать без приставки mod_ - format=raw - обязательный параметр в котором мы говорим в каком формате будут наши данные, всего есть три формата: raw, json иdebug
- Дальше мы можем указывать свои параметры!
- Так же мы можем дополнительно переопределить метод в который будет идти AJAX запрос! для этого нам нужно передать переменную method=myMethod
В этом случае будет вызываться метод: getMyMethodAjax
Для того что бы все это работало у нашего модуля должен быть класс помощник helper.php, этот файл должен лежать в одной папке с нашим модулем.
Класс помощника должен строго называться modModuleNameHelper, в имени класса помощника не должно быть знака нижнего подчеркивания!
В классе должен быть файл getAjax() который будет принимать наши данные с AJAX и выполнять нужные вам действия!
Теперь рассмотрим работу с плагинами!
Строка для запроса практически та же:
index.php?option=com_ajax&plugin=plugin_name&format=raw&var1...
Все параметры те же самые что и в модуле кроме:
plugin=plugin_name - в котором мы говорим что будем работать с плагином и указываем имя плагина!
group=group_name - имя группы плагина, по умолчанию, если параметр не указан, будут использоваться плагины которые находящиеся в группе ajax!
В плагине должен быть метод onAjaxИмяПлагина который и будет ловить обращение к этому плагину!
Изменять имя метода для плагина, как в модуле, нельзя!