2013-07-31 52 views
0

我有基於joomla ajax的模塊,用於從db中獲取數據。我想使用這個腳本從DB在joomla中通過ajax調用時,acess被拒絕

$db = JFactory::getDBO(); 
    $db->setQuery("my query"); 
    $db->query(); 
    $res = $db->loadAssocList(); 

獲取數據,但它給我的錯誤,如

Fatal error: Class 'JFactory' not found in 

然後我把這個代碼在頁面

defined('_JEXEC') or die('Restricted access'); 

的頂部啓用jFacotry並按預期啓用它,但現在我無法進入此頁面,因爲我收到消息「受限訪問」。

我該怎麼做才能解決這個問題。

+0

此錯誤是由於joomla框架無法從您的頁面訪問 –

回答

0

首先,此代碼檢查是否定義了常量_JEXEC,如果不是,則顯示「受限訪問」錯誤。它不會加載或啓用任何內容。

你使用的是哪個版本的Joomla,你的腳本(組件/模塊)在哪裏?

+0

我正在使用joomla 3。1是的,它的enabaled在其他所有頁面上工作正常,但僅在通過ajax調用的那些頁面上存在問題,並且我的腳本位於模塊文件夾 –

0

如果您嘗試訪問模塊與Ajax調用正確的方法是如下

$document = &JFactory::getDocument(); 
$renderer = $document->loadRenderer('module'); 

$Module = &JModuleHelper::getModule('mod_fmDataGrid'); 

$Params = "param1=bruno\n\rparam2=chris";//This will only required when you pass module params through code 
$Module->params = $Params; 
echo $renderer->render($Module); 

more

如果你正試圖從當前頁面訪問它,你必須加載框架工作太像在下面,但它不是一個好習慣。

define('_JEXEC', 1); 
define('JPATH_BASE', dirname(__FILE__));//this is when we are in the root 
define('DS', DIRECTORY_SEPARATOR); 

require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 

對於more

設法使一個AJAX調用任何現有的組件控制器等的下方。

jQuery.ajax ({ 

     type: "GET", 

     url: "index.php?option=com_virtuemart&controller=productdetails&ajax_request=1&task=addItemToWaitlist", 
//controller components controller name 
//task the function inside controller. 
     data: data, 

     success: function(data) { 
      alert(data) 
}}); 
+0

不,我不通過ajax訪問整個模塊,但是我有模塊,並且在該模塊內部我有一個Ajax調用一個頁面,並且該頁面受限於我在頂部提到的那行代碼。 –

+0

你可以粘貼代碼爲ajax調用它傳遞通過哪個組件? –

+0

jQuery.ajax 類型:「POST」, url:「<?php echo JURI :: root()。'modules/mod_stune_cat_indians/getuser.php';?>」, data:「page =」 (「#container」)。ajaxComplete(函數(事件,請求,設置) { jQuery(「#container」)。html() msg); }); } }); } –

1

據我瞭解您想要使用的Joomla方法在外部文件,並調用該文件通過Ajax,讓您的數據你的問題。如果我是正確的,比我想說的默認Joomla環境,你可以直接調用任何外部文件功能模塊。你也不能直接使用Joomla方法從數據庫中獲取結果而不包括庫文件。

意見建議:有一件事情對我有用,而我有同樣的問題。我製作了一個自定義組件,並在其中定義任務,從數據庫獲取我的數據,並通過ajax將該任務調用到我的模塊中並顯示結果。這件東西適合我。

嘗試對任何自定義或現有組件控制器進行ajax調用,如下所示。

<script> 
jQuery.ajax ({ 
     type: "GET", 
     url: "index.php?option=com_custom&controller=custom&task=getdata", 
     data: data, 
     success: function(data) { 
      alert(data) 
    } 
}); 
</script> 

希望我的建議也能幫助你解決你的問題。祝你好運。

相關問題