You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter动态依赖下拉框获取值却显示空白问题求助

解决CodeIgniter动态依赖下拉框不显示选项的问题

我帮你定位到了几个关键问题,咱们一步步来修复:

1. AJAX成功回调的赋值错误

你在JS的success函数里错误地把服务ID塞给了下拉框,而不是控制器返回的选项HTML。这是最核心的问题:

修正后的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(data); // 这里改成返回的data!
            },
            error: function(){
                alert('Error occur...!!');
            }
        });
    }
}); 

2. 控制器里的HTML实体转义错误

你用了&lt;和&gt;来拼接选项,这会让返回的内容变成纯文本字符,浏览器无法解析成HTML标签。应该直接用<和>:

修正后的控制器代码:

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 Procedure</option>';
        foreach ($result as $rows) {
         // 建议value只存itemNum,避免逗号/空格导致后续取值问题
         $pro_select_box .= '<option value="'.$rows->itemNum.'">'.$rows->prodName.'</option>';
        }
        echo $pro_select_box;
    }
    // 无数据时返回提示选项
    else {
        echo '<option value="">No procedures found</option>';
    }
}

3. 视图里的HTML结构错误

你的视图代码里多了一个多余的</select>标签,会破坏HTML结构,影响下拉框渲染:

修正后的视图代码:

<select name="servID" id="servID" class="form-control" data-live-search="true">
    <option value=''>-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>

额外优化建议

  • 模型代码可以简化,不需要额外判断行数:
public function get_all_products1($servID){
    return $this->db->get_where('laboratory', array('servID' => $servID))->result();
}
  • 可以给servPRO下拉框加初始提示选项,比如<option value="">Select Procedure</option>,提升用户体验。
  • 调试时可以在控制器里用var_dump($result)确认是否拿到了正确的数据,排查模型查询问题。

按照这些修改后,你的动态依赖下拉框应该就能正常显示选项了!

内容的提问来源于stack exchange,提问作者DrkProgramming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:21:27