Here is a snippet code i used to create ajax driven multiple drop down menu. Actually i have 2 methods for sake of simplicity i am posting simplest method ie one that doesn't has json manipulations.
In the view page
<select class="form-control" name="categories" id="categories" onchange="load_products()" >
<option value="" selected="selected"><?php echo "Select A Category" ; ?></option>
</select>
<select class="form-control" name="products" id="products" required/></select>
JavaScript code in view page
<script>
function load_products()
{
categories=$('#categories').val();
if($('#categories').val()!="" && $('#categories').val()!="*") {
$.ajax({
type: "POST",
url: " <?php echo base_url('Home/load_products'); ?>",
data: "categories=" + categories,
success: function (msg) {
if (msg) {
$('#products').html(msg);
// $('#products').removeClass('hidden')
}
}
});
// return false;
}
else {
$('#products').html('');
// $('#products').addClass('hidden')
}
}
</script>
Now in the controller
function load_products()
{
$categories=$this->input->post('categories');
$products=$this->Homemodel->allproducts($categories);
if($products!=NULL)
{
$fop="Select A Product ";
echo ($this->create_drop_down($fop,$products,'productname','id'));
}
else{
echo "<option value=''>No Product Found</option>";
}
}
function create_drop_down($options,$opts,$txt,$val)
{
$options = "<option value=''>".$options."</option>";
if(!empty($opts))
{
foreach ($opts as $row)
{
$options.="<option value='".$row->$val."'>".$row->$txt."</option>";
}
}
return $options;
}
I am skipping model code. If this method doe not work for you comment below.