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

CodeIgniter 3中Ajax无法请求upload.php文件问题求助

解决Ajax提交无响应问题

在CodeIgniter框架中,直接访问独立的upload.php文件不符合框架路由规则,这就是你遇到提交无响应的核心原因,按以下步骤修改即可解决:

  • 在控制器中新增上传处理方法
    放弃使用独立的upload.php,在加载import.php视图的对应控制器(比如Admin_importexport)里添加handle_upload方法,专门接收并处理Ajax提交的请求:

    public function handle_upload()
    {
        // 这里编写文件上传逻辑,可使用CI自带的上传类
        // 示例:加载上传类并配置参数
        $this->load->library('upload');
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'csv|xls|xlsx';
        $this->upload->initialize($config);
    
        // 处理上传并返回JSON响应
        if ($this->upload->do_upload('your_file_field')) {
            echo json_encode(['status' => 'success', 'data' => $this->upload->data()]);
        } else {
            echo json_encode(['status' => 'error', 'msg' => $this->upload->display_errors()]);
        }
        exit;
    }
    
  • 修改Ajax请求的目标地址
    在import.php的Ajax脚本里,将请求URL改为控制器方法的路由地址,示例如下:

    $.ajax({
        url: '/admin/importexport/handle_upload', // 若开启index.php则改为/index.php/admin/importexport/handle_upload
        type: 'POST',
        data: new FormData($('#your-form-id')[0]),
        contentType: false,
        processData: false,
        success: function(res) {
            console.log(res);
            // 处理成功响应
        },
        error: function(xhr) {
            console.log(xhr.responseText);
            // 排查错误信息
        }
    });
    
  • 处理CSRF防护(若开启)
    如果你的CI配置中开启了CSRF保护($config['csrf_protection'] = TRUE;),需要在Ajax请求中携带CSRF令牌:

    1. 在视图头部添加令牌元标签:
      <meta name="csrf-token" content="<?php echo $this->security->get_csrf_hash(); ?>">
      
    2. 在Ajax请求中加入头部信息:
      headers: {
          'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
      },
      
  • 验证路由可达性
    可以先在handle_upload方法中写入简单输出:echo "test"; exit;,然后直接在浏览器访问该路由地址,确认是否能返回内容,以此验证路由配置是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:55:22