Codeigniter上的动态依赖下拉列表

时间:2018-03-16 02:23:56

标签: javascript php codeigniter

我正在开发一个在codeigniter上使用动态依赖下拉列表的项目。对不起,我对编码很新。我有一个表获取正在运行的服务的ID,但获取依赖于该服务的另一个表是不起作用的。我在谷歌浏览器中使用了控制台工具,并显示它获取了另一个表的选项值,但它在我的浏览器中显示了一个空白的选择输入。

shows the option value in my dbase

这是我的代码:controller:

public function get_procedures()
{
    $servID = $this->input->post('servID');
    $result = $this->Laboratory_Model->get_all_products1($servID);
    if(count($result)>0)
    {
        $pro_select_box = '';
        $pro_select_box .= '<option value="">Select s</option>';
        foreach ($result as $rows) {



         $pro_select_box .='<option value="'.$rows->itemNum.', '.$rows->prodName.' ">'.$rows->prodName.'</option>';
        }
        echo $pro_select_box;
    }
}

JS:

       $('#servID').on('change', function(){
            var servID = $(this).val();
            if(servID == '')
            {
                $('#servPRO').attr('disabled', true);
            }
            else
            {
                $('#servPRO').attr('disabled', false);

                $.ajax({
                    url:"<?php echo base_url() ?>get_procedures",
                    type: "POST",
                    data: {'servID' : servID},
                    dataType: 'html',

                    success: function(data){
                       $('#servPRO').html(servID);
                    },
                    error: function(){
                        alert('Error occur...!!');
                    }
                });
            }
       }); 

实验室模型:

        public function get_all_products1($servID){
    $query = $this->db->get_where('laboratory', array('servID' => $servID));
    if($query->num_rows() > 0){
        return $query->result();
    } else {
        return NULL;
    }
}

的观点:

    <select name ="servID" id="servID" class="form-control" data-live-search="true">
                      <option value = 'null'>-Select Category-</option>
                          <?php foreach($service as $rows): ?>
                              <option value = '<?php echo $rows->servID?>'><?php echo $rows->service_cat?></option>
                          <?php endforeach ?>
                  </select>
    </select> <select class="form-control"  name="servPRO" id="servPRO">
    </select>

1 个答案:

答案 0 :(得分:0)

你的ajax success 方法的请求参数输入错误,提供的变量应该是 data 而不是 servID

$.ajax({
    url:"<?php echo base_url() ?>get_procedures",
    type: "POST",
    data: {'servID' : servID},
    dataType: 'html',

    success: function(data){
       $('#servPRO').html(data); // change servID to data
    },
    error: function(){
        alert('Error occur...!!');
    }
});

修改

更改默认 ServID 选择

<option value='null'>-Select Category-</option>

<option value=''>-Select Category-</option>

因为'null'不等于''

并设置下拉列表的初始状态:

$('#servPRO').attr('disabled', $('#servID').val() == '' ? true : false ); // set initial state

$('#servID').on('change', function(){
    var servID = $(this).val();
    if(servID == '')
    {
        $('#servPRO').attr('disabled', true);
    }
    else
    {
        $('#servPRO').attr('disabled', false);

        $.ajax({
            url:"<?php echo base_url() ?>get_procedures",
            type: "POST",
            data: {'servID' : servID},
            dataType: 'html',

            success: function(data){
               $('#servPRO').html(data); // changed servID to data
            },
            error: function(){
                alert('Error occur...!!');
            }
        });
    }
});