Joomla AJAX 调用丢失 Joomla 数据库类

Posted

技术标签:

【中文标题】Joomla AJAX 调用丢失 Joomla 数据库类【英文标题】:Joomla AJAX call losing Joomla database class 【发布时间】:2012-10-19 17:09:46 【问题描述】:

我目前正在将一些功能构建到 Joomla 构建中,而结果是在选择框更改时从数据库返回的。 我遇到的问题是当我进行Ajax 调用时,我得到一个Class JFactory not found' 错误,我认为这是因为运行php 代码的文件在AJAX 时不被认为在Joomla 框架内打电话了吗? 我试图自己解决这个问题,但遇到了麻烦。 谁能指出我在哪里出错的正确方向?

Ajax 调用(在 index.php 中):

<script type="text/javascript">
    var url = "<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/directory_code.php";
    jQuery(document).ready(function() 
        jQuery('#city').change(function()          
        jQuery.ajax(
            url: url,
            type: "POST",
            data: jQuery("#city").serialize(),
            dataType: 'json',
            success: function(data) 
            alert('data');
            
        );
    );
);
</script>

以及函数(在一个名为 directory_code.php 的文件中):

if(isset($_POST)) 
    if(isset($_POST['city'])) 
        $city = $_POST['city'];
        $suburbs = populateSuburbs($city);
    
   

function populateSuburbs($city)                
    $db = JFactory::getDBO();
    $query = "SELECT DISTINCT suburb FROM vyj20_contact_details";
    $db->setQuery($query);
    $results = $db->loadObjectList();
    foreach($results as $key => $result) 
        $data['suburb'][] = array(
            $key => $result->suburb
        );
    

非常感谢

【问题讨论】:

查看这个 joomla 文档-docs.joomla.org/Adding_AJAX_to_your_component 【参考方案1】:

代码defined( '_JEXEC' ) or die( 'Restricted access' ); 通常限制ajax

函数,因此您需要使用define('_JEXEC', 1);

注意你需要使用define而不是defined,所以如果你还没有这样做,我建议你尝试一下。

【讨论】:

以上是关于Joomla AJAX 调用丢失 Joomla 数据库类的主要内容,如果未能解决你的问题,请参考以下文章

joomla 组件不调用任何模型函数和控制器函数

ajax.googleapis.com 与 joomla 3 冲突

Joomla home 丢失了组件的 sef 别名

回复:Joomla/PHP/Java/AJAX

将搜索 DIV 添加到 Joomla 3.0 组件视图时 CSS 丢失

Joomla - 如何在 php 文件中使用 Ajax 接收数据后连接到 db