Jquery Joomla with Ajax:致命错误:Class';JFactory';找不到

Jquery Joomla with Ajax:致命错误:Class';JFactory';找不到,jquery,ajax,joomla,joomla2.5,Jquery,Ajax,Joomla,Joomla2.5,在弄清楚如何一起使用Ajax和Joomla框架方面仍然存在问题。我已经创建了一个Joomla组件,我可以通过以下方式访问该组件: index.php?option=com\u mycomponent 我在components/com\u mycomponent/views/mycomponent/tmpl/default.php中使用Jquery和Ajax: <?php // No direct access to this file defined('_JEXEC') or die('R

在弄清楚如何一起使用Ajax和Joomla框架方面仍然存在问题。我已经创建了一个Joomla组件,我可以通过以下方式访问该组件:

index.php?option=com\u mycomponent

我在
components/com\u 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>

Ajax与jQuery示例
$(文档).ready(函数(){
$(“#生成”)。单击(函数(){
$(“#quote p”).load(“components/com#u mycomponent/views/mycomponent/tmpl/script.php”);
});
});

然后在script.php文件中,我有以下内容:

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


如果我不把任何Joomla框架代码放在script.php中,它就可以正常工作。但这样做的目的是,我需要使用Joomla框架,从而创建组件的整个要点。但是我仍然不明白我需要如何构造Joomla组件,这样我就不会得到
类'JFactory'not found
错误?

最终并没有花费太长时间。唯一需要的文件是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>

$(文档).ready(函数(){
$(“#生成”)。单击(函数(){
$(“#quote”).show();
});
});
我已经注释掉了代码中的jquery引用,因为widgetkit已经加载了它的一个副本,但为了以防万一,还是保留了它

这样做不是加载另一个文件,而是隐藏
#quote
div标记,当单击按钮时,显示其中的数据。在这篇文章中,我添加了
realname
userid
,以防万一

希望这有帮助


问候

最后并没有花太多时间。唯一需要的文件是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>

$(文档).ready(函数(){
$(“#生成”)。单击(函数(){
$(“#quote”).show();
});
});
我已经注释掉了代码中的jquery引用,因为widgetkit已经加载了它的一个副本,但为了以防万一,还是保留了它

这样做不是加载另一个文件,而是隐藏
#quote
div标记,当单击按钮时,显示其中的数据。在这篇文章中,我添加了
realname
userid
,以防万一

希望这有帮助


关于

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


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


这是script.php中唯一的代码吗?您可以删除
language=“javascript”
,因为不需要它。为什么要在default.php?@Lodder中使用
html
body
标记,这是script.php中唯一的代码。不过,我一直在尝试编写一些简单的echo代码,只是为了验证我是否可以让Ajax调用正常工作(确实如此)。问题是我需要将Joomla框架与script.php一起使用。W.r.t html和body标记,我不知道,我认为这是必要的。这是script.php中唯一的代码吗?您可以删除
language=“javascript”
,因为不需要它。为什么要在default.php?@Lodder中使用
html
body
标记,这是script.php中唯一的代码。不过,我一直在尝试编写一些简单的echo代码,只是为了验证我是否可以让Ajax调用正常工作(确实如此)。问题是我需要将Joomla框架与script.php一起使用。W.r.t html和body标记,我不知道,我认为这是必要的。尝试了这个,但我的生成按钮没有做任何事情。虽然它没有给出JFactory错误,但事实上它没有给出任何错误?@Tom:你在一个实时站点上有这个组件吗,或者你能提供一个下载链接吗?很遗憾,我希望它是一个开发站点。我可以让你进入,但需要你的ip@Tom:问题解决了。我已经更新了我的答案。希望这有帮助。尝试过这个,但我的“生成”按钮没有任何作用。虽然它没有给出JFactory错误,但事实上它没有给出任何错误?@Tom:你在一个实时站点上有这个组件吗,或者你能提供一个下载链接吗?很遗憾,我希望它是一个开发站点。我可以让你进入,但需要你的ip@Tom:问题解决了。我已经更新了我的答案。希望这有帮助。