Joomla与Ajax:致命错误:未找到类'JFactory'

时间:2012-08-01 03:09:26

标签: jquery ajax joomla joomla2.5

仍然无法确定如何一起使用Ajax和Joomla框架。我创建了一个Joomla组件,我可以访问它:

index.php?option=com_mycomponent

我在components/com_mycomponent/views/mycomponent/tmpl/default.php中使用Jquery和Ajax:

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<html>
<head>
  <title>Ajax with jQuery Example</title>

<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/JavaScript">
  $(document).ready(function(){
    $("#generate").click(function(){
  $("#quote p").load("components/com_mycomponent/views/mycomponent/tmpl/script.php");

    });
  });
  </script>
</head>
<body>
  <div id="wrapper">
    <div id="quote"><p> </p></div>
    <input type="submit" id="generate" value="Generate!">
  </div>
</body>
</html>

然后在script.php文件中我有:

<?php  
$user =& JFactory::getUser();
echo "This is the user: ".$user;
?> 

如果我没有在script.php中放置任何Joomla框架代码,它可以正常工作。但这样做的目的是我需要使用Joomla框架,因此需要创建一个组件。但我仍然不明白我是如何构建Joomla组件所以我没有得到Class 'JFactory' not found错误?

2 个答案:

答案 0 :(得分:1)

我认为正确的方法是在组件的controller.php文件中添加一个任务。

http://docs.joomla.org/Adding_AJAX_to_your_component

答案 1 :(得分:0)

最终不会花太长时间。唯一需要的文件是default.php,因此您可以删除script.php和其中的其他奇怪文件。

<强>如default.php

<?php
defined('_JEXEC') or die('Restricted access');

//$document =& JFactory::getDocument();
//$document->addScript("https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js");
$user =& JFactory::getUser();
?>

<div id="wrapper">
    <div id="quote" style="display:none; padding-bottom:10px;">
        <?php 
          echo "<p>This is your username: " . $user->username . "</p>"; 
          echo "<p>This is your realname: " . $user->name . "</p>"; 
          echo "<p>This is your user ID: " . $user->id . "</p>";
        ?>
    </div>
    <input type="submit" id="generate" value="Generate!">
</div>

<script type="text/javascript">
$(document).ready(function(){
     $("#generate").click(function(){
          $("#quote").show();
     });
});
</script>

我已经在代码中注释掉了jquery引用,因为widgetkit已经加载了它的副本,但只是将它保存在那里。

它不是加载另一个文件,而是隐藏#quote div标签,当点击该按钮时,它会显示其中的数据。在这一个中,我添加了realnameuser ID

希望这有帮助。

此致