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

AJAX请求Codeigniter 4.21返回正常但无法绑定Select2,求解决方案

解决CodeIgniter 4.21 AJAX返回数据无法绑定Select2的问题

问题根源

你的控制器返回的JSON结构外层包含data字段,前端Select2的processResults未正确解析这个层级;同时Select2默认要求选项对象包含id和text字段,而你的返回数据用的是id和spesialis,需要做字段映射。

修复步骤

1. 修正前端AJAX的processResults逻辑

修改JavaScript代码,正确提取响应中的数据数组,并将spesialis字段映射为Select2需要的text字段:

<script>
$(document).ready(function() { // 确保DOM加载完成后初始化Select2
    $('#spesialis').select2({
        placeholder: "Pilih Spesialisasi...",
        ajax: {
            url: '<?= base_url('getspesialis') ?>', // 使用base_url生成正确URL,避免路径问题
            type: 'GET',
            dataType: 'JSON',
            delay: 250,
            processResults: function(response) {
                // 提取响应中的data数组,并映射字段
                return {
                    results: response.data.map(item => ({
                        id: item.id,
                        text: item.spesialis
                    }))
                };
            }
        }
    });
});
</script>

2. 验证路由配置

确保在CodeIgniter4的app/Config/Routes.php中正确配置路由:

$routes->get('getspesialis', 'YourControllerName::getSpesialis');

(替换YourControllerName为实际的控制器类名)

3. 确认返回的JSON格式

控制器返回的JSON结构需符合以下示例:

{"data": [{"id":1,"spesialis":"Kardiologi"},{"id":2,"spesialis":"Neurologi"}]}

额外注意事项

  • 确保页面已正确引入Select2的CSS和JS文件
  • 若项目部署在子目录下,必须使用base_url()生成AJAX请求URL,避免相对路径错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:45:47