2012-08-01 28 views
1

仍然有問題想辦法解決如何一起使用Ajax和Joomla框架。我創建了我可以訪問一個Joomla組件:Joomla with Ajax:致命錯誤:未找到類'JFactory'

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; 
?> 

如果我不把任何的Joomla框架代碼中的script.php,它工作正常。但這樣做的目的是我需要使用Joomla框架,因此需要創建一個組件。但我仍然不明白我需要如何構建Joomla組件,所以我沒有得到Class 'JFactory' not found錯誤?

+0

是你在script.php中唯一的代碼嗎?你可以刪除'language =「javascript」',因爲它不需要。爲什麼你在default.php中使用'html'和'body'標籤? – Lodder 2012-08-01 03:20:26

+0

@Lodder這是script.php中唯一的代碼。不過,我已經玩過一些簡單的回聲代碼來驗證我可以讓Ajax調用工作(它的確如此)。問題是我需要用script.php來使用Joomla框架。 W.r.t html和body標籤,我不知道,我認爲這是必要的。 – Tom 2012-08-01 03:28:06

回答

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

希望這會有所幫助。

問候

+0

試過這個,但我的生成按鈕沒有做任何事情。雖然它不會給出JFactory錯誤,但實際上它不會給出任何錯誤? – Tom 2012-08-01 03:40:25

+0

@Tom:您是否擁有現場網站上的組件,或者您能否提供下載鏈接? – Lodder 2012-08-01 03:41:12

+0

希望我很遺憾,它是一個開發網站。我可以給你訪問,但需要你的IP – Tom 2012-08-01 03:42:30