В 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ИмяПлагина который и будет ловить обращение к этому плагину!
Изменять имя метода для плагина, как в модуле, нельзя!