codeigniter如何使用codeigniter基于第一个下拉列表填充第二个下拉列表:

时间:2018-01-08 13:12:48

标签: javascript ajax codeigniter-3

我尝试过以下内容,但我需要填充两个依赖的下拉列表(penality_type based on vehicle_type)列表: 有没有人告诉我如何在这里实施:

这是我的控制器:

public function index()
    {
    $data['vehicle_type'] = $this->vehicle_type_model->getAllVtype();
        $data['penality_type'] = $this->vehicle_type_model->getAllPenalityType();
         $this->load->view('admin/penality_type_price/view_penality_type_price', $data);
    }

这是vehicle_type_model:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class vehicle_type_model extends CI_Model {

    /*
    * Get All Vehicle types
    */

    public function getAllVtype()
    {
        $result = $this->db->get('vehicle_type');
        return $result->result_array();
    }


        public function getAllPenalityType()
    {
        $result = $this->db->get('penality_type');
        return $result->result_array();
    }

}

这是我的观点:

    <div class="form-group">
            <label for="vehicle_type_id">Vehicle Type</label>
            <select name="vehicle_type_id" class="form-control vehicle_type_id">
                <option value="">Select Vehicle type</option>
            </select>

        </div>

    <div class="form-group">
            <label for="penality_type_id">penality type</label>
            <select name="penality_type_id" class="form-control penality_type_id">
                <option value="">Select penality type</option>
            </select>  
    </div>

1 个答案:

答案 0 :(得分:0)

你在做什么是不正确的。我假设您的惩罚类型取决于车辆类型,因此您应该将vehicle_type id通过ajax传递给控制器​​,然后传递到数据库并将它们加载到惩罚类型下拉列表中。

请参阅以下代码

你的索引功能就是这个,

public function index()
{
    $data['vehicle_type'] = $this->vehicle_type_model->getAllVtype();
    $this->load->view('admin/penality_type_price/view_penality_type_price', $data);
}

您的观点

<div class="form-group">
   <label for="vehicle_type_id">Vehicle Type</label>
   <select name="vehicle_type" class="form-control vehicle_type_id" id = "vehicle_type">
       <option value="">Select Vehicle type</option>
       <?php foreach($vehicle_type as $row) { ?>
            <option value="<?php echo $row->vehicle_type_id ?>"><?php echo $row->vehicle_type_name; ?></option>
       <?php } ?>
   </select>
</div>

AJAX代码

var base_url = "<?php echo base_url; ?>";
$("#vehicle_type").change(function () {
        if ($('#vehicle_type').val() != "") {
            $.ajax({
                url: base_url + "your_controller/get_penality_by_id",
                type: 'POST',
                cache: false,
                data: {
                    'vehicle_type_id': $('#vehicle_type').val()
                },
                success: function (data) {
                    if($data){
                       $("#penality_type").html(data);
                    }
                }
            });
        }
    });

控制器

public function get_penality_by_id(){
    $vehicle_type_id = $this->input->post('vehicle_type_id');
    $data = array('vehicle_type_id' => $vehicle_type_id);
    $result = $this->your_model_name->get_penality($data);

    if($result){
       $option = "<option value=''>--Select an Option--</option>";
       foreach ($result as $row){
           $option .= "<option value='".$row->penality_id."'>".$row->penality_name."</option>";             
       }
       echo $option;
    }else{
       echo $option = "<option value=''>--Select an Option--</option>";
  }
}

<强>模型

public function get_penality($data){
   $this->db->select('*');
   $this->db->from('table-name');
   $this->db->where($data);
   $result_set = $this->db->get();
   if($result_set->num_rows() > 0){
      return $result_set->result();
   }
   else {
      return FALSE;
   }
}

请注意,您的车辆类型下拉选项将包含vehicle_type ID,可用于获取相关罚款。希望这可以帮到你。