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

Vue.js中使用axios.post提交的FormData数据无法在PHP的if语句中正常处理

解决FormData请求在PHP中无法获取参数的问题

嘿,我一眼就看出问题所在啦!你前端用FormData发送请求,但后端却用json_decode去解析请求体,这俩格式不匹配,难怪拿不到数据~

问题根源

当你用FormData传递数据时,请求的Content-Type是multipart/form-data(表单编码格式),而不是application/json。这时候php://input里的内容是表单的编码字符串,不是标准的JSON,所以json_decode解析后返回null,自然没法通过$requestBody['action']获取值。

解决方案一:继续使用FormData(推荐,适合文件上传等场景)

直接用PHP内置的$_POST全局数组就能拿到FormData里的参数,不需要手动读取php://input。修改你的PHP代码:

// 先判断参数是否存在,避免报错
if(isset($_POST['action']) && $_POST['action'] == 'GetOperator'){
    echo 'executed';
}

解决方案二:改用JSON格式发送请求

如果你更想用JSON传递数据,需要调整前端代码,直接发送JSON对象并设置正确的请求头:

axios.post(BaseUrl + 'core/core.php', { action: 'GetOperator' }, {
    headers: {
        'Content-Type': 'application/json'
    }
})
.then((res) => {
    console.log(res);
    this.loading = false;
})
.catch((error) => {
    console.log(error);
});

这时候你原来的PHP代码就可以正常工作了,因为请求体是标准JSON字符串,json_decode能正确解析成数组。

额外小提示

  • 可以在PHP里用var_dump($_POST)先看看有没有拿到数据,排查问题更高效
  • 如果涉及大文件或大量数据,记得检查PHP配置里的post_max_size和upload_max_filesize,避免请求被拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:09:08