Php 使用jQuery、JSON和AJAX,codeigniter填充一个子菜单下拉列表
我创建了一个带有菜单和子菜单的表单。我从数据库中加载菜单下拉列表,但我面临使用ajax、json和codeigniter从数据库中加载子菜单的问题。请解决我的问题。。先谢谢你 这是我的观点Php 使用jQuery、JSON和AJAX,codeigniter填充一个子菜单下拉列表,php,jquery,json,ajax,codeigniter,Php,Jquery,Json,Ajax,Codeigniter,我创建了一个带有菜单和子菜单的表单。我从数据库中加载菜单下拉列表,但我面临使用ajax、json和codeigniter从数据库中加载子菜单的问题。请解决我的问题。。先谢谢你 这是我的观点 <form action="" method="post" id="frm_submenu"> <div class="form-group"> <label for="menu">Select Menu</
<form action="" method="post" id="frm_submenu">
<div class="form-group">
<label for="menu">Select Menu</label>
<select class="form-control" id="selectmenuid">
<option value="">-- Select Menu --</option>
<?php foreach($showData as $show):?>
<option value="<?php echo $show->menu_id?>"><?php echo $show->menu_name?></option>
<?php endforeach;?>
</select>
</div>
<div class="form-group">
<label for="menu">Select Sub Menu</label>
<select class="form-control" id="selectsubmenu">
</select>
</div>
<div class="form-group">
<label for="imagetitle">Image Title</label>
<input type="text" class="form-control" name="imagetitle" id="imagetitle" placeholder="Enter Image Title" required="required">
</div>
<div class="form-group">
<label class="btn btn-default btn-file">
Browse <input type="file" style="display: none;">
</label>
</div>
<button type="submit" class="btn btn-primary" id="submit">Submit</button>
</form>
您在构造带有附录的
项目
html时出错。改用这个:
$.each(data,function(key,value){
$('#selectsubmenu').append('<option value="'+value.submenu_id+'">'+value.submenu_name+'</option>');
});
$。每个(数据、函数(键、值){
$(“#选择子菜单”).append(“”+value.submenu_name+“”);
});
您在第一次查看时遇到了一些问题。首先,$smid
变量应该是双引号或相应的转义。单引号中的变量按其外观处理,因此您的php代码应如下所示:
public function populate_submenu($id){
$smid=$id;
$data['query']= $this->db->select('select * from submenu where menu_id="$smid"');
echo json_encode($data);
}
在JS代码中,您没有从each()
方法中开始打开的
标记关闭
,并且子菜单的名称出现错误,您应该通过索引获得它,因此:
$('#selectsubmenu').append('<option value="' + data[i].submenu_id + '"' + data[name].submenu_name + '</option>');
$(“#selectsubmenu”).append('我检查了上面的两个代码。.当我单击菜单名时,它的加载但在子菜单中显示为未定义。@AntoAlexander,我必须在数据中看到JSON,这样我才能提供帮助。如果执行控制台.log(数据),控制台中会得到什么输出;
关于AJAX成功?@lonut嗨,在AJAX成功区域,我放置了console.log(数据);然后我加载我的页面并选择菜单,然后我在控制台中检查它,显示XHR已完成加载:POST“”.我的菜单id仅成功通过,但子菜单没有结果…请提前解决此问题,谢谢因此当您在#selectsubmenu
上选择某个内容时,成功后不会获得JSON?localhost链接localhost/creator/Admin\creator/populate\u子菜单/3
上有什么内容?只有您可以访问。对不起,我不会如果您不在这里帮助我,请能够确定问题。我需要查看JSON。如果您在控制台中执行console.log(数据)时找不到它
这意味着有你的问题,数据没有通过。是的,你是正确的。但是我是这个概念的更新者,我不知道如何将这个问题放入成功页面…问题解决了:成功:函数(数据){$('select#selectsubmenu').html('--选择子菜单--');for(var i=0;i)
public function populate_submenu($id){
$smid=$id;
$data['query']= $this->db->select('select * from submenu where menu_id="$smid"');
echo json_encode($data);
}
$('#selectsubmenu').append('<option value="' + data[i].submenu_id + '"' + data[name].submenu_name + '</option>');
$('#selectsubmenu').append('<option value="' + data[i].submenu_id + '">' + data[i].submenu_name + '</option>');
$("#selectmenuid").change(function() {
var id = $('#selectmenuid').val();
populate_submenu(id);
});
function populate_submenu(id) {
$('#selectsubmenu').empty();
$('#selectsubmenu').append("<option>Loading ....</option>");
$.ajax({
type: "POST",
url: "<?php echo site_url('Admin_Creator/populate_submenu')?>/" + id,
contentType: "application/json;charset=utf-8",
dataType: 'json',
success: function(data) {
$('#selectsubmenu').empty();
$('#selectsubmenu').append("<option>Select Sub Menu</option>");
$.each(data, function(i, name) {
$('#selectsubmenu').append('<option value="' + data[i].submenu_id + '">' + data[i].submenu_name + '</option>');
});
}
});
}