Зависимый выпадающий список в codeigniter - PullRequest
0 голосов
/ 21 февраля 2019

Мне нужно заполнить список состояний в раскрывающемся списке, когда выбрана страна.

Мой код

view

<div class="form-group col-md-6">
                                       <label for="inputEmail4" class="uppercase pull-left m-0">Country</label>
                                         <!-- <input type="text" id="country" name="country" required value="<?php echo $row_all->country;?>"  placeholder="Please enter your country name"> -->

                                         <select name="country" id="country" required>
                                           <option value="">--select country--</option>
                                           <?php
                                            if($countries->num_rows()>0)
                                            {
                                                foreach ($countries->result() as $countries_row) {

                                             ?>
                                           <option <?php if($countries_row->id==$row_all->countryid){ echo "selected"; }?> value="<?php echo $countries_row->id;?>"><?php echo $countries_row->name;?></option>
                                           <?php
                                         } } ?>
                                         </select>
                                     </div>

                                     <div class="form-group col-md-6">
                                       <label for="inputPassword4" class="uppercase pull-left m-0">State</label>

                                       <select name="state" id="state" >
                                       </select>

                                     </div>

<script type='text/javascript'>
          // baseURL variable
          var baseURL= "<?php echo base_url();?>";

          $(document).ready(function(){

            // City change
            $('#country').change(function(){
              var country = $(this).val();
              alert(country);
              // AJAX request
              $.ajax({
                url:'<?php echo base_url()?>main/get_states',
                method: 'post',
                data: {country: country},
                dataType: 'json',
                success: function(response){
                  alert(response);
                  // Remove options
                  //$('#state').find('option').not(':first').remove();
                  //$('#city').find('option').not(':first').remove();

                  // Add options
                  $.each(response,function(get_states,data){
                     $('#state').append('<option value="'+data['id']+'">'+data['name']+'</option>');
                  });
                }
             });
           });


          });


         </script>

controller

function get_states()
    {
        $this->load->helper('url');
    $postData = $this->input->post();
    $this->load->model('candidate_model');
    $data = $this->candidate_model->fetch_states($postData);
    echo json_encode($data);
    }

Модель

андидат_модель

function fetch_states($postData)
    {
             //$query = $this->db->query("SELECT * FROM states");
            //return $query;
        $response = array();
        // Select record
        $this->db->select('id,name');
        $this->db->where('country_id', $postData['country']);
        $q = $this->db->get('states');
        $response = $q->result_array();
        $response= json_encode($response);
        return $response;
    }

Модель возвращает значение из базы данных, и к нему также можно получить доступ из представления.Я предупреждаю об ответе, и он возвращает массив вроде {"id": "36", "name": "delhi"}.Мне нужно заполнить эти результаты в раскрывающемся списке с идентификаторами состояний

Любая помощь?Заранее спасибо

1 Ответ

0 голосов
/ 21 февраля 2019

Попробуйте это ,
Модель:

function fetch_states($country)
{
    $this->db->select('id,name');
    $this->db->where('country_id', $country);
    $q = $this->db->get('states');
    if ($q->num_rows() > 0) {
        return $q->result_array();
    }else{
        return array();
    }
}

Контроллер:

function get_states()
{
    $this->load->helper('url');
    $postData = $this->input->post();
    $this->load->model('candidate_model');
    $country = $postData['country'];
    $state = $this->candidate_model->fetch_states($country);
    $respose_array['state'] = $state;
    echo json_encode($response_array);
    exit();
}

Просмотр кода ajax:

$.ajax({
    url:'<?php echo base_url()?>main/get_states',
    method: 'post',
    data: {country: country},
    dataType: 'json',
    success: function(response){
      $.each(JSON.parse(response.state),function(i,item){
         $('#state').append('<option value="'+item.id+'">'+item.name+'</option>');
      });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...