我目前正在构建一些功能到 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
);
}
}
非常感谢
最佳答案
代码defined( '_JEXEC' ) or die( 'Restricted access' );
通常限制ajax
函数因此你需要使用 define('_JEXEC', 1);
请注意,您需要使用 define
而不是 defined
,所以如果您还没有这样做,我建议您尝试一下。
关于php - Joomla AJAX 调用丢失 Joomla 数据库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13137682/