Php 使用jQuery、JSON和AJAX,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</

我创建了一个带有菜单和子菜单的表单。我从数据库中加载菜单下拉列表,但我面临使用ajax、json和codeigniter从数据库中加载子菜单的问题。请解决我的问题。。先谢谢你

这是我的观点

<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>');
      });
    }
  });
}