У меня есть форма с двумя блоками выбора. один для города, а другой для этого района.
Мое требование. Когда кто-то выбирает город, области в городе должны быть захвачены из базы данных и отображены в другом поле выбора.
Я пытался, но у меня проблемы с моим ajax. вот мой код ниже.
Посмотреть
<div class="location-group"> <label class="-label" for="city"> Location </label> <div class=""> <select id="city_select"> <option value="0"> select</option> <?php foreach ($city as $cty) : ?> <option value="<?php echo $cty->city_id; ?>"><?php echo $cty->name; ?></option> <?php endforeach ?> </select> </div> </div> <div class="location control-group" id="area_section"> <label class="control-label" for="area"> Area </label> <div class="controls"> <select id="area_select"> <option value=""> Any</option> <?php foreach ($area as $ara) : ?> <option value="<?php echo $ara->ara_id; ?>"><?php echo $ara->name; ?></option> <?php endforeach ?> </select> </div><!-- /.controls --> </div><!-- /.control-group -->
контроллер
function __construct() { parent::__construct(); //session, url, satabase is set in auto load in the config $this->load->model('Home_model', 'home'); $this->load->library('pagination'); } function index(){ $data['city'] = $this->home->get_city_list(); $data['type'] = $this->home->get_property_type_list(); $this->load->view('home', $data); } function get_area(){ $area_id = $this->uri->segment(3); $areas = $this->home->get_area_list($area_id); echo json_encode($areas); }
Модель
function get_area_list($id){ $array = array('city_id' => $id, 'status' => 1); $this->db->select('area_id, city_id, name'); $this->db->where($array); $this->db->order_by("name", "asc"); $this->db->from('area'); $query = $this->db->get(); $result = $query->result(); return $result; }
Ajax
<script type="text/javascript"> $('#area_section').hide(); $('#city_select').on('change', function() { // alert( this.value ); // or $(this).val() if (this.value == 0) { $('#area_section').hide(600); }else{ //$("#area_select").html(data); $.ajax({ type:"POST", dataType: 'json', url:"<?php echo base_url('index.php?/home/get_area/') ?>", data: {area:data}, success: function(data) { $('select#area_select').html(''); $.each(data, function(item) { $("<option />").val(item.area_id) .text(item.name) .appendTo($('select#area_select')); }); } }); $('#area_section').show(600); }; }); </script>
как только я выбираю город, он должен получить все области в городе из базы данных и отобразить его в поле выбора area_select .
Кто-нибудь может мне помочь, пожалуйста. Благодарю.