Использование AJAX интерфейса в Joomla!

From Joomla! Documentation

This page is a translated version of the page Using Joomla Ajax Interface and the translation is 100% complete.
Joomla! 
≥ 3.2
серия

Что такое AJAX интерфейс Joomla! (com_ajax)

Компактный, расширяемый компонент, действующий в качестве точки входа для HTTP запросов для автономных модулей и плагинов, тем самым предоставляя им потенциал функциональности AJAX. Com_ajax в основном используют в тех случаях, когда не являются разработчиками того компонента, с которым взаимодействует модуль или плагин.

ПРИМЕЧАНИЕ: Если Вы разработчик компонентов, то нет необходимости применять в нем com_ajax для реализации функционала AJAX. Вы можете это сделать напрямую в своем компоненте.

Примеры применения:

  • Модуль, получающий данные из внешнего API.
  • Модуль, взаимодействующий с компонентом, который разработан не вами.
  • Плагин, реализующий схожую с API функциональность для организации потребления данных с Вашего сайта.

Анатомия AJAX запроса

Требуется

  • option=com_ajax
  • [module|plugin]=name
  • format=[json|debug|raw]

Опционально

  • method=[custom fragment] по умолчанию становится get, если не указано.

Обзор

Все запросы начинаются с ?option=com_ajax, который вызывает это расширение, должны содержать в себе тип расширения для вызова и формат возвращаемых данных.

Дополнительные переменные и значения, используемые вашим расширением также могут быть включены в URL.

Например запрос к ?option=com_ajax&module=session вызовет mod_session с результатами, возвращенными в формате по умолчанию. Код ?option=com_ajax&plugin=session&format=json вызовет метод onAjaxSession плагинов с выводом результата в JSON.

Поддержка модулей

Обобщение

Поддержка модулей реализована вызовом метода в файле helper.php модуля.

Детали

Запросы модуля должны включать в себя переменную module в URL, в паре с именем модуля (например: module=session для mod_session). Обратите внимание на то, что в названии модуля не должно быть символов подчеркивания - "_" без учёта префикса mod_. Например, обратиться по ajax к модулю с названием mod_virtuemart_products не получится. Название модуля должно быть mod_virtuemartproducts, а вызов по ajax module=virtuemartproducts. Однако, это ограничение не действительно для плагинов, где название плагина может содержать символы подчёркивания.

Это значение также используется для:

  • Имени директории для проверки файла помощника, например /modules/mod_session/helper.php
  • Наименование класса для вызова, например:

modSessionHelper

Опционально может быть включена переменная method для отмены префикса метода get по умолчанию.

"'Примечание"': все методы должны заканчиваться на Ajax. Например:
method=mySuperAwesomeMethodToTrigger вызовет mySuperAwesomeMethodToTriggerAjax

Ajax Session Module является примером модуля, демонстрирующего такую функциональность.

Ответ плагинов

Обобщение

Поддержка плагинов достигается путем запуска события. плагина onAjax[Name] .

Детали

Запросы плагинов должны включать в себя переменнуюplugin в URL в паре с событием плагина, например plugin=session для onAjaxSession.

Это значение также используется для:

  • Имени класса плагина, который следует соглашению plgAjax[Name]
  • Имени функции, которая следует соглашению onAjax[Name]/
  • Группа плагинов по умолчанию ajax. Вы можете сменить её, указав параметр запроса group (начиная с Joomla! 3.4).

Ajax Latest Articles plugin пример плагина, демонстрирующего такую функциональность.

Формат Ответа

format=[json|debug] необязательный аргумент для формата результатов.

  • json для формата JSON
  • debug для человекочитаемого вывода результатов./ru/ru/ru