2010-03-04 2 views
1

Я создаю модуль, где в моем основном файле PHP я добавил ссылку на файл Javascript. В этом файле Javascript я вызываю вызов jQuery в dom, который делает сообщение Ajax, чтобы захватить исходный контент для div. URL-адрес, который он отправляет, является другим файлом PHP (gateway.php), который является частью моего модуля. (Этот gateway.php выполняет вызов удаленного сервера для получения содержимого.)Как использовать jQuery ajax в модуле Joomla

Ну, прямой доступ обычно запрещается для файлов модулей. Я могу прокомментировать строку кода, запрещающую прямой доступ. Даже делая это, по какой-то причине кажется, что мой gateway.php не имеет полного доступа ко всему в Joomla. Например, у gateway.php есть требование моего файла helper.php. Я просто делаю

require_once(dirname(__FILE__) . DS . 'helper.php'); 

который, насколько я могу судить, является стандартным способом включения файла. Тем не менее, я получаю ошибки, показывающие, что DS не переводится как значение, определенное в Joomla. Его обработка DS напоминает строковое значение.

Если изменить его

require_once(dirname(__FILE__) . '/helper.php'); 

тогда я получаю запрещенную ошибку прямого доступа.

Любая идея, что здесь происходит, или правильный способ использования Ajax в модуле Joomla в файле, отличном от основного файла модуля PHP?

ответ

1

Если вам не нужно делать какие-либо конкретные действия, вы всегда должны делать свои звонки через файл index.php Joomla. Не пытайтесь вызывать отдельные файлы PHP, если они не являются на 100% независимыми от Joomla. Вызов defined('_JEXEC') or die('Restricted access'); в верхней части каждого файла .php в Joomla по какой-либо причине: вы хотите свести к минимуму количество точек входа в Joomla.

Чтобы сделать вызовы AJAX/JSON, которые извлекают данные из Joomla, вы захотите создать небольшой компонент для совместного использования с вашим модулем. Я написал сообщение в блоге об этом несколько месяцев назад: http://www.designvsdevelop.com/the-way-not-to-do-javascript-in-joomla

Смежные вопросы