I am making country state and city drop down with the help of ajax in our codeigniter frame work .
The structure of database given bellow.
Country
country_id,country_name
State
country_id,state_id,state_name
city
country_id,state_id,city_id,city_name
user controler
function country(){ $data['header']='Deal Management'; $data['page'] = 'admin/page/user-view'; $data['Country'] = $this->deal->getCountry(); $this->load->view($this->_admin_container,$data); } function get_cities($Country){ $this->load->model('city_model'); header('Content-Type: application/x-json; charset=utf-8'); echo(json_encode($this->cities_model->get_cities($dealCountry))); }
user-view View
<?php $cities['#'] = 'Please Select'; ?> <label for="country">Country: </label><?php echo form_dropdown('country_id', $Country, '#', 'id="country"'); ?><br /> <label for="city">City: </label><?php echo form_dropdown('city_id', $cities, '#', 'id="cities"'); ?><br />
deal module country_modle
function getCountry(){ $this->db->select("*"); $query=$this->db->get("deal_country"); $countries = array(); if($query->result()){ foreach ($query->result() as $country) { $countries[$country->country_id] = $country->country_name; } return $countries; }else{ return FALSE; } }
city_model Module
function get_cities($dealCountry = null){ echo $dealCountry;die; $this->db->select('city_id, city_name'); if($dealCountry != NULL){ $this->db->where('country_id', $dealCountry); } $query = $this->db->get('deal_city'); $cities = array(); if($query->result()){ foreach ($query->result() as $city) { $cities[$city->id] = $city->city_name; } return $cities; }else{ return FALSE; } }
I include ajax script in header file.
<script type="text/javascript">// <![CDATA[ $(document).ready(function(){ $('#country').change(function(){ //any select change on the dropdown with id country trigger this code $("#cities > option").remove(); //first of all clear select items var country_id = $('#country').val(); // here we are taking country id of the selected one. $.ajax({ type: "POST", url: "home/get_cities/"+country_id, //here we are calling our user controller and get_cities method with the country_id success: function(cities) //we're calling the response json array 'cities' { $.each(cities,function(city_id,city) //here we're doing a foeach loop round each city with id as the key and city as the value { var opt = $('<option />'); // here we're creating a new select option with for each city opt.val(id); opt.text(city); $('#cities').append(opt); //here we will append these new select options to a dropdown with the id 'cities' }); } }); }); }); // ]]> </script>
After making code its not working .
Any help is appreciated!
Thanks