Всем привет. Решил интегрировать jQuery в компонент и сразу же наткнулся на подводные камни. Приведу простой пример(подобный случай уже обсуждался на форуме, но ничего толкового я там не вычитал): Имеется компонент "Компонент1", соответственно имеем файл "компонент1.пхп" в который я, с помощью jQuery.ajax пытаюсь получить данные из файла library.php который лежит в папке компонента и в котором находятся функции выборки контента из БД. Для работы с БД я использую стандартный джумловский database, соответственно для этого мне нужен Код (PHP): defined ('_VALID_MOS') . Внимание, вопрос : "Как передать этот VALID_MOS через $.ajax, для того что бы обезопасить компонент ?"
читать нужно было FAQ. В нем написано, что такого рода запросы перенаправляются в index2.php. для примера: Код (CODE): $.ajax({ type: "POST", url: "'.$mosConfig_live_site.'/index2.php?option=com_&Itemid='.$Itemid.'&task=opinion&no_html=1", data: "option=com_&itemid='.$Itemid.'&task=opinion&opinions=add&id='.$id.'&ip='.$ip.'&cm_uname='.$my->username.'" + "&captcha=" + captcha + "&cm_content=" + content, cache: false, success: function(){... и уже в вашем library.php делаете: Код (CODE): switch ($task) { case 'opinion_new': include('components/com_kinoarhiv/details/kinoarhiv.opinion.php'); showComments(); break; ...
Приветствую! доделываю другой компонент (JEvents) - Joomla 1.5., Jquery необходимо передать данные и обработать их в файле 1.php как правильно передать данные (в url к файлу) и что указать в файле 1.php, чтобы использовать API Joomla для работы с БД?
Код (CODE): $.ajax({ type: "POST", url: "index2.php?option=com_mycomponent¶m=ok&no_html=1", data: "option=com_mycomponent¶m=ok&no_html=1", cache: false, success: function(msg){ alert(msg); } }); что мы делаем: option означает к какому компонету нада обратиться (com_mycomponent - название вашего компонента), param = ok - нужен для того что бы инклудить ваш файл 1.php в компонент, т.е. в исполняющем файле вашего компонента нужно написать: Код (PHP): $param = mosGetParam($_REQUEST, 'param', null ); //получаем значение передоваемого параметра if ($param == "ok"){ //проверяем значение параметра include_once("1.php"); //если все хорошо, подключаем файл с функциями } т.е. есле у вас в 1.php написанно Код (PHP): echo "Привет, все ништяк"; то после приведённого выше запроса ты получишь эту надпись на экране. З.Ы,: использование index2.php вместо стандартного index.php и параметра no_html=1 нужно для получения хтмл-кода самого компонента, а не всего шаблона. забыл, в 1.php в самом начале не забудь поставить Код (PHP): defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); global $database;
ну в компоненте само собой )))) я щас как раз вожусь с переводом движка джумлы на аякс.... и у меня есть небольшая проблемка - когда я пытаюсь вывести что-нибуть из com_content, то после загрузки полученных данных в див меня перекидывает на пустую страницу, это происходит только с ком_контент, со всеми остальными все нормально работает ( З,Ы,: использую jQuery фреймворк.