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

CodeIgniter中如何将数据传递至下一页?现有编辑代码遇问题

在CodeIgniter中传递数据到编辑页面的解决方案

看你的代码,核心问题出在AJAX请求后的跳转逻辑上:你用POST传递了ID,但直接跳转页面时,POST的参数不会跟着带到新页面,而且$(location).attr('href', ...).html(data)的写法也不对——设置href后页面会立即刷新跳转,html(data)根本没有执行的机会。

下面给你几种实用的解决方案,帮你搞定这个问题:

方案1:直接通过URL传递ID(最常用也最简单)

不需要用AJAX,点击按钮时直接跳转到带ID的编辑页面URL就可以。把你的JS代码改成这样:

$(".content-wrapper").on("click", ".modalButton", function(e) {
    e.preventDefault();
    // 获取当前行的ID
    const stockId = $(this).attr("data-src");
    // 跳转到带ID的编辑页面
    window.location.href = "<?php echo base_url('stock_details/edit/'); ?>" + stockId;
});

然后在CodeIgniter的Stock_details控制器里,这样接收ID并获取数据:

public function edit($id = null) {
    // 检查ID是否有效
    if (!$id) {
        // 没有ID的话跳回列表页
        redirect('stock_details');
    }

    // 从模型获取对应ID的库存数据
    $data['stock_data'] = $this->stock_model->get_stock_details($id);
    
    // 加载编辑视图并传递数据
    $this->load->view('stock_edit_view', $data);
}

这样在编辑视图里,你就能直接用$stock_data调用要编辑的内容了。

方案2:AJAX验证ID有效性后再跳转(如果需要前置验证)

如果你必须先确认ID有效再跳转,可以这样修改代码:

$(".content-wrapper").on("click", ".modalButton", function(e) {
    e.preventDefault();
    const stockId = $(this).attr("data-src");
    
    $.ajax({
        url: "<?php echo base_url('stock_details/check_valid_id'); ?>",
        method: "post",
        data: { id: stockId },
        dataType: "json"
    }).done(function(response) {
        if (response.is_valid) {
            // 验证通过,跳转到带ID的编辑页面
            window.location.href = "<?php echo base_url('stock_details/edit/'); ?>" + stockId;
        } else {
            alert("无效的库存ID,请检查!");
        }
    }).fail(function() {
        alert("请求出错,请稍后重试!");
    });
});

然后在控制器里加一个验证ID的方法:

public function check_valid_id() {
    $id = $this->input->post('id');
    $is_valid = $this->stock_model->is_stock_exists($id);
    
    echo json_encode([
        'is_valid' => $is_valid
    ]);
}

原代码的核心问题总结

  • AJAX POST传递的ID,在页面跳转时不会被携带(因为跳转是GET请求),所以编辑页面拿不到参数。
  • $(location).attr('href', ...).html(data)是错误写法:设置href后浏览器会立即跳转,后续的html(data)完全不会执行,而且跳转后的页面是服务器返回的全新页面,不是当前页面替换内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:26:45