2013-01-01 93 views
0

我的Joomla getuser.php取得了外部文件,並將其放置在administrator/getuser.phpJFactory沒有找到

包含的數據庫查詢

<?php 
$q=$_GET["q"]; 
$db = JFactory::getDBO(); 
// Create a new query object. 
$query = $db->getQuery(true); 
$query->select($db->nameQuote('product_name')); 
$query->from('#__virtuemart_products_en_gb'); 
$query->where($db->nameQuote('virtuemart_product_id').' = '.$db->quote($q)); 
$db->setQuery($query); 
$result = $db->loadResult(); 

    echo "<tr>"; 
    echo "<td>" . $result['product_name'] . "</td>"; 
    echo "</tr>"; 
?> 

,並使用位於管理員/組件/ com_virtuemart /視圖AJAX從product_edit_information.php叫它/產品/ TPL/product_edit_information.php

代碼是

<form> 
<select name="users" onChange="showUser(this.value)"> 
<option value="">Select a person:</option> 
<option value="7745">YA Ali</option> 
<option value="7746">Qasim</option> 
</select> 
</form> 
<br /> 
<div id="txtHint"><b>Person info will be listed here.</b></div> 
<script> 
function showUser(str) 
{ 
if (str=="") 
    { 
    document.getElementById("txtHint").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","getuser.php?q="+str,true); 
xmlhttp.send(); 
} 
</script> 

誤差

Fatal error: Class 'JFactory' not found in C:\xampp\htdocs\bc22\administrator\getuser.php on line 3

這是什麼錯誤 了我是如何的Joomla

我也經歷這一點,但無法理解...... http://docs.joomla.org/Adding_AJAX_to_your_component

defined('_JEXEC') or die('Restricted access'); 
添加外部文件的原因

當我把這個在getuser.php的頂部,它會給我錯誤

限制訪問

當我echo $q=$_GET["q"]; // output 7745 and 7746

<option value="7745">YA Ali</option> 
<option value="7746">Qasim</option> 

但經過jFactory沒有找到發生錯誤

對不起,我的英文不好

回答

5

,你應該在你的代碼的頂部添加以下代碼:

define('_JEXEC', 1); 
define('DS', DIRECTORY_SEPARATOR); 

if (file_exists(dirname(__FILE__) . '/defines.php')) { 
    include_once dirname(__FILE__) . '/defines.php'; 
} 

if (!defined('_JDEFINES')) { 
    define('JPATH_BASE', dirname(__FILE__)); 
    require_once JPATH_BASE.'/includes/defines.php'; 
} 

require_once JPATH_BASE.'/includes/framework.php'; 
require_once JPATH_BASE.'/includes/helper.php'; 
require_once JPATH_BASE.'/includes/toolbar.php'; 

問題是你不包括Joomla框架和使用JFactory。如果任何函數包含錯誤,則應該包含該函數的Joomla路徑。
Restricted access問題解決與define('_JEXEC', 1);

+0

感謝mrash .....現在工作像一個魔術 – user1781038