我的问题是:我有一个存储在数据库中的分类列表,我希望在下拉列表中输出。当要显示子类别时,层次结构就会出现,这取决于父ID(等于列出的前七个主要类别)。我的想法相对简单:当用户点击动态分配的主要类别列表时,他们点击选项标签。对于每个选项标记,在value属性中列出了一个id(即父元素),以及一个发送到Javascript函数的参数,然后使用AJAX通过PHP获取数据并将其发送到我的'javascript。 php'文件。然后该文件执行魔术,并填充子类别列表,该列表取决于所选的主要类别。我相信我有这个想法,只是因为某些原因,我正在不正确地实施解决方案。
这是我到目前为止所拥有的:
来自javascript.php的
<script type="text/javascript" src=<?=JPATH_BASE.DS.'includes'.DS.'jquery.js';?>>
var ajax = {
ajax.sendAjaxData = function(method, url, dataTitle, ajaxData) {
$.ajax({
type: 'post',
url: "C:/wamp/www/patention/components/com_adsmanagar/views/edit/tmpl/javascript.php",
data: {
'data' : ajaxData
},
success: function(result){
// we have the response
alert("Your request was successful." + result);
},
error: function(e){
alert('Error: ' + e);
}
});
}
ajax.printSubCategoriesOnClick = function(parent) {
alert("hello world!");
ajax.sendAjaxData('post', 'javascript.php', 'data' parent);
<?php
$categories = $this->formData->getCategories($_POST['data']);
?>
ajax.printSubCategories(<?=$categories;?>);
}
ajax.printSubCategories = function(categories) {
var select = document.getElementById("subcategories");
for (var i = 0; i < categories.length; i++) {
var opt = document.createElement("option");
opt.text = categories['name'];
opt.value = categories['id'];
}
}
}
</script>
用于填充表单数据的函数
function populateCategories($parent, FormData $formData) {
$categories = $formData->getCategories($parent);
echo "<pre>";
print_r($categories);
echo "</pre>";
foreach($categories as $section => $row){
?>
<option value=<?=$row['id'];?> onclick="ajax.printSubCategoriesOnClick(<?=$row['id']?>)">
<? echo $row['name']; ?>
</option>
<?php
}
}
问题是,当我尝试在$ _POST变量上执行print_r时,什么都没有显示出来。我还收到一个“未定义的索引”错误(指的是我为数据类型设置的密钥)。我想由于某种原因,数据被发送到我的form.php文件,或者我的default.php文件,它通过函数包含form.php和javascript.php文件。
这里有什么具体的东西吗?不幸的是,只是查找基本的AJAX语法(通过jQuery)并没有帮助。