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

如何在CodeIgniter中将数据传递到模态框(Modal)?

在CodeIgniter中将控制器数据传递到编辑模态框的解决方案

我来帮你搞定这个问题,核心就是把控制器拿到的数据传递到模态框里,这里有两种常用的方法,你可以根据自己的场景来选:

方法一:AJAX异步加载数据(推荐,适合列表页批量编辑场景)

这种方法适合页面上有多个编辑按钮,点击每个按钮弹出同一个模态框并填充对应数据的场景,步骤如下:

1. 修改控制器的edit方法,返回JSON数据

你的控制器现在只是创建了数据数组,但没有输出数据,我们需要把它改成返回JSON格式,这样前端AJAX能直接接收:

public function edit($id_ekspor){
    $eks = $this->m_ekspor->GetDataEkspor("where id_ekspor = '$id_ekspor'");
    $data = array(
        "id_ekspor" => $eks[0]['id_ekspor'],
        "e_berat" => $eks[0]['e_berat'],
        "e_nilai" => $eks[0]['e_nilai'],
        "tahun" => $eks[0]['tahun'],
        "id_industri" => $eks[0]['id_industri'],
        "nm_industri" => $eks[0]['nm_industri']
    );
    // 输出JSON格式的数据给前端
    echo json_encode($data);
}

2. 给列表页的编辑按钮添加标识

在你的数据列表页面,给每个编辑按钮加上data-id属性,用来存储当前条目的id_ekspor:

<button class="btn btn-edit" data-id="<?php echo $item['id_ekspor']; ?>">编辑</button>

3. 添加JavaScript代码,实现点击填充模态框

引入jQuery后,添加以下代码监听按钮点击事件,通过AJAX获取数据并填充到模态框:

$(document).ready(function(){
    $('.btn-edit').click(function(){
        var eksporId = $(this).data('id');
        // 发送AJAX请求到控制器的edit方法
        $.ajax({
            url: '<?php echo base_url('master_ekspor/edit/'); ?>' + eksporId,
            type: 'GET',
            dataType: 'json',
            success: function(response){
                // 把返回的数据填充到模态框的对应字段
                $('#id_ekspor').val(response.id_ekspor);
                $('#nm_industri').val(response.nm_industri);
                $('#e_berat').val(response.e_berat);
                $('#e_nilai').val(response.e_nilai);
                $('#tahun').val(response.tahun);
                $('#id_industri').val(response.id_industri);
                // 打开模态框
                $('#con-close-modal').modal('show');
            },
            error: function(){
                alert('获取编辑数据失败,请稍后重试');
            }
        });
    });
});

方法二:服务器端直接渲染数据(适合单独编辑页面)

如果你的模态框是在单独的编辑页面里,不需要批量操作,可以直接把数据传递到视图:

1. 修改控制器,传递数据到视图

在控制器的edit方法末尾,添加加载视图的代码,把$data数组传递过去:

public function edit($id_ekspor){
    $eks = $this->m_ekspor->GetDataEkspor("where id_ekspor = '$id_ekspor'");
    $data = array(
        "id_ekspor" => $eks[0]['id_ekspor'],
        "e_berat" => $eks[0]['e_berat'],
        "e_nilai" => $eks[0]['e_nilai'],
        "tahun" => $eks[0]['tahun'],
        "id_industri" => $eks[0]['id_industri'],
        "nm_industri" => $eks[0]['nm_industri']
    );
    // 加载包含模态框的视图,$data里的键会自动变成视图中的变量
    $this->load->view('你的视图文件名', $data);
}

这样你的模态框里的<?php echo $id_ekspor; ?>等变量就能正常获取到数据了。

重要提醒:防止SQL注入

你现在的SQL条件是直接拼接字符串的,存在SQL注入风险,建议修改模型的GetDataEkspor方法,使用CodeIgniter的参数绑定功能:
比如把模型方法改成:

public function GetDataEkspor($id_ekspor){
    // 使用get_where方法自动处理参数绑定,避免注入风险
    return $this->db->get_where('ekspor', array('id_ekspor' => $id_ekspor))->result_array();
}

然后控制器里调用的时候改成:

$eks = $this->m_ekspor->GetDataEkspor($id_ekspor);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:57:12