使用 CodeIgniter 框架,我正在尝试为具有子类别且子类别具有子类别的类别创建一个下拉列表,依此类推……因此,当用户在下拉列表中选择第一级类别时说“男人”,另一个下拉列表将出现在下面,我可以选择 T 恤,另一个下拉列表会出现,说长袖,它一直持续到它有多深。
我创建了一个包含列名的表:id、category_name 和 parent_id,并且能够检索它:
public function get_categories($parent_id = 0){
$this->db->from('all_categories');
$this->db->where('parent_id', $parent_id);
$result = $this->db->get();
return $result->result_array();
}
然后我有一个初始下拉菜单,它检索所有具有 parent_id = 0 的行
<select class="theTarget">
<?php
echo "<option>Select Category</option>";
foreach($getCategories as $row){
echo "<option value=".$row['id'].">". $row['category_name']."</option>";
}
?>
</select>
<div class="subCategories">
//subcategories will appear here...
</div>
目前看起来还不错。。
现在在我的脚本中,我有:
$('form').on('change','.theTarget',function(){
//Gets the value of the selected
var categoryId = $('.theTarget option:selected').val();
$.post('fetch_subcategories',{categoryId:categoryId}, function(data){
$('.subCategories').html(data);
});
});
然后 ajax 将帖子信息发布到文件 fetch_subcategories.php 中。在 fetch_subcategories.php 我有这个:
$categoryId = $_POST['categoryId'];
$query = "SELECT * FROM all_categories WHERE parent_id = {$categoryId}";
$result = mysql_query($query);
$html = "
<select class='theTarget'>
<option>Select Subcategory</option>
";
while($row = mysql_fetch_array($result)){
$html .="<option value=".$row['id'].">".$row['category_name']."</option>";
}
$html .= "</select>";
if(mysql_num_rows($result)!=0){
echo $html;
}
很好看还是很好看!它完全符合我的要求。我选择了男士,然后出现一个下拉菜单,里面有 T 恤……但是当我选择 T 恤(T 恤也有子类别)时,什么也没有发生。
这是我发布过的最长的帖子,这让我发疯。我在这里想念什么?或者,如果有人可以提出更好的方法来做到这一点?
非常感谢。