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

Ajax POST提交二维码base64数据 后端报Undefined index:img问题

POST接收不到Ajax提交的二维码Base64参数排查方案

触发Undefined index:img报错的核心原因是POST请求中的img参数没有被PHP端正常解析,按以下优先级逐一排查即可:

  • 检查请求路径拼写与跳转状态
    你代码里写的接口路径是dasboard/qrcode,和常规的dashboard(仪表盘)拼写差了一个字母h。如果路径错误触发服务器301/302跳转,POST请求会在跳转后自动转为GET请求,原有POST参数会全部丢失。打开浏览器开发者工具-网络面板,找到对应请求查看状态码,如果是3xx类跳转,修正路径拼写即可。
  • 检查请求Content-Type配置是否正确
    jQuery的$.ajax默认传普通对象参数时,会自动设置请求头Content-Type: application/x-www-form-urlencoded; charset=UTF-8,PHP只有收到这个格式的请求才会把参数解析到$_POST全局数组里。如果项目里全局修改过$.ajax默认配置(比如强制设为application/json),就会导致PHP无法解析参数。在当前请求中显式指定Content-Type即可避免全局配置影响:
    $.ajax({
      type: 'post',
      url: '<?php echo base_url('dashboard/qrcode'); ?>', // 注意修正拼写
      contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
      data: {
        'img': img_data
      },
      success: function(response) {
        console.log(response)
      }
    });
    
  • 检查框架拦截规则
    从代码里的base_url()写法判断你用的是CodeIgniter框架,框架默认开启CSRF安全防护,如果请求没携带合法CSRF令牌,会直接拦截POST请求,不会走到你调用$_POST['img']的业务逻辑。两种处理方式:
    • 把当前二维码上传接口加入CSRF校验白名单
    • 在Ajax请求参数中携带CSRF令牌:
      data: {
        'img': img_data,
        '<?php echo $this->security->get_csrf_token_name(); ?>': '<?php echo $this->security->get_csrf_hash(); ?>'
      }
      
    另外CI框架推荐用内置输入类获取参数,比直接读$_POST兼容性更好:$imagedata = base64_decode($this->input->post('img'));
  • 检查POST体积限制配置
    Base64编码后的内容会比原二进制文件大33%,如果php.ini中post_max_size配置值过小,会导致整个请求体被丢弃,$_POST为空数组。可以在控制器入口临时打印var_dump($_POST)确认,如果输出是空数组,就调整php.ini中两个配置项,改完重启PHP服务即可:
    post_max_size = 8M
    upload_max_filesize = 2M
    
  • 跨域场景额外检查
    如果前端页面和接口域名、端口、协议不一致属于跨域请求,需要后端配置正确的CORS响应头,允许对应来源的请求、允许POST方法、允许携带Content-Type请求头,否则预检请求失败后实际POST请求不会携带正常参数。

额外修复点:你前端调用qr.toDataURL('image/jpeg')指定输出JPEG格式,后端保存文件却用了.png后缀,会导致存下来的图片无法正常打开,要么把前端toDataURL的参数改为image/png,要么后端把文件后缀改为.jpg。

调试技巧:如果以上排查都没定位到问题,可以在控制器最开头把file_get_contents('php://input')获取到的原始请求体写入日志文件,如果日志里能看到img的base64内容,说明是PHP/框架的参数解析逻辑问题;如果日志为空,说明前端根本没把参数正常发出,回头检查前端请求逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:09:19