Я создал некоторые модули в Joomla, используя Jumi. Поэтому я могу написать любой код php / javascript и создать модуль Jumi, который я смогу отобразить там, где хочу.
Я делал это некоторое время без проблем, но теперь, когда я пытаюсь разработать AJAX с JQuery, я получаю эту ошибку:
Class 'JFactory' not found in api.php
Поэтому у меня есть файл PHP с кодом jQuery:
$(function() { $.ajax({ url: 'ajax_dashboard/api.php', //the script to call to get data data: "", dataType: 'json', //data format success: function(data) //on recieve of reply { var id = data[0]; //get id var vname = data[1]; //get name $('#output').append("<b>id: </b>"+id+"<b> name: </b>"+vname) .append("<hr />"); //Set output element html } }); });
Как вы видите, он вызывает скрипт api.php для обработки некоторых серверов. В этом файле есть несколько вызовов joomla, например:
$user = &JFactory::getUser();
Итак, почему в этом случае у меня нет рамки Joomla?
Проблема в том, что ваш вызов Ajax попадает в файл из платформы «Joomla». Правильный способ сделать это, если это возможно, – сделать ajax-вызов примерно таким:
index.php? вариант = yourcomponent и контроллер = ххх и задача = ууу
(это означает, что у вас должен быть компонент «mycomponent» и контроллер «xxx» внутри этого компонента). Затем контроллер должен нести ответственность за обращение с вызовом ajax и отправку ответа. Вы можете вернуть json-закодированный ответ, например, или все, что вам нужно.
Я надеюсь, что это помогло
Я использую это для решения проблемы. Я получаю переменную, пока я нахожусь в структуре joomla. Затем я передаю переменную User_Name в моем вызове ajax …
Надеюсь это поможет
<script type="text/javascript"> var User_Name = '<?php $user =& JFactory::getUser(); $User_Name = $user->username; echo $User_Name; ?>'; </script>