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

CodeIgniter 4中Select2搜索结果无法显示跳转链接的问题求助

解决CodeIgniter4结合Select2实现搜索结果点击跳转课程页面的问题

你的控制器代码已经正确返回了课程ID和名称,无需修改,只需调整前端Select2的配置即可实现点击跳转需求,以下提供两种可行方案:

方案一:自定义搜索结果模板,直接渲染可点击链接

通过templateResult配置自定义下拉列表的渲染方式,将每个搜索结果转为带跳转链接的<a>标签,同时保持选中项的正常显示:

修改视图中的JS代码:

$('.search').select2({
    placeholder: '--- What do you want to learn today? ---',
    ajax: {
        url: '<?php echo base_url('Home/ajaxSearch');?>',
        dataType: 'json',
        delay: 250,
        processResults: function(data){
            return {
                results: data
            };
        },
        cache: true
    },
    // 自定义搜索结果的渲染模板
    templateResult: function(item) {
        if (item.loading) {
            return item.text;
        }
        // 创建跳转链接,拼接courseID
        var $a = $('<a>').attr('href', '../course/' + item.courseID).text(item.text);
        return $a;
    },
    // 自定义选中项的显示文本
    templateSelection: function(item) {
        return item.text;
    }
});

点击下拉列表中的链接即可直接跳转,同时select框会保留选中的课程名称。

方案二:监听选择事件,选中后自动跳转

如果需要保留select的表单特性,可监听select2:select事件,在用户选中选项后自动跳转:

修改视图中的JS代码:

$('.search').select2({
    placeholder: '--- What do you want to learn today? ---',
    ajax: {
        url: '<?php echo base_url('Home/ajaxSearch');?>',
        dataType: 'json',
        delay: 250,
        processResults: function(data){
            return {
                results: data
            };
        },
        cache: true
    }
}).on('select2:select', function(e) {
    // 获取选中课程的ID并跳转
    var courseID = e.params.data.courseID;
    window.location.href = '../course/' + courseID;
});

额外建议

为避免相对路径可能导致的跳转错误,建议使用CodeIgniter的base_url生成绝对路径,比如将跳转链接改为:

window.location.href = '<?php echo base_url('course/');?>' + courseID;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:20:18