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

如何在CodeIgniter中实现控制器向JavaScript传递数据?

在CodeIgniter中实现控制器向JavaScript传递数据的方法

针对你给出的CodeIgniter控制器和视图代码,以下是几种实用的传递数据方式:

1. 直接将PHP变量赋值给JavaScript变量

你的控制器已经通过$data['targetPath']把路径传递到视图了,只需要在视图的JavaScript中直接输出PHP变量即可,建议用htmlspecialchars避免XSS风险:

修改后的视图JavaScript代码

if(percent === 100) { // 注意:原代码的`=`是赋值,需改为`===`做相等判断
    $('#progressBar').hide();
    const tp = '<?php echo htmlspecialchars($targetPath); ?>';
    _("status").innerHTML = tp;
    console.log(tp);
}

2. 传递多组数据:PHP数组转JSON

如果需要传递多个配置项,可在控制器中组装数组,再转成JSON格式传给JavaScript:

修改后的控制器代码

public function file_upload(){
    $targetPath = "assets/uploads/";
    $uploadMaxSize = 2 * 1024 * 1024; // 限制2MB
    
    // 组装多组数据
    $data['uploadSettings'] = [
        'targetPath' => $targetPath,
        'maxFileSize' => $uploadMaxSize
    ];
    $this->load->view('test', $data);
}

视图中接收JSON数据

// 将PHP数组转为JSON对象
const uploadSettings = <?php echo json_encode($uploadSettings); ?>;

// 使用数据
if(percent === 100) {
    $('#progressBar').hide();
    _("status").innerHTML = uploadSettings.targetPath;
    console.log('目标路径:', uploadSettings.targetPath);
    console.log('最大文件大小:', uploadSettings.maxFileSize);
}

3. 通过隐藏输入框传递数据

如果更倾向于分离PHP和JS代码,可在视图HTML中添加隐藏输入框存储数据,再用JS读取:

视图HTML部分

<input type="hidden" id="targetPath" value="<?php echo htmlspecialchars($targetPath); ?>">

视图JavaScript部分

if(percent === 100) {
    $('#progressBar').hide();
    // 读取隐藏输入框的值
    const tp = document.getElementById('targetPath').value;
    // 或者用jQuery:const tp = $('#targetPath').val();
    _("status").innerHTML = tp;
    console.log(tp);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:35:20