2

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

调用(在Ajaxindex.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
        );
    }
}

非常感谢

4

1 回答 1

0

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

功能,因此您将需要使用define('_JEXEC', 1);

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

于 2012-10-30T11:34:40.800 回答