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

PHP接收application/json格式POST请求时$_POST变量为空如何解决

问题根因

你发送的是Content-Type: application/json格式的POST请求,PHP的$_POST超全局变量仅会自动解析application/x-www-form-urlencoded、multipart/form-data两种格式的请求体,JSON格式的请求体不会被解析到$_POST中,因此拿到的参数为空。

修复方案

按以下步骤修改参数读取逻辑即可:

  • 首先从PHP输入流读取原始JSON请求体
  • 调用json_decode将JSON字符串解析为PHP数组/对象
  • 按需判断解析结果是否合法,避免报错

示例代码如下:

// 读取原始JSON请求体
$rawInput = file_get_contents('php://input');
// 第二个参数传true表示解析为关联数组
$requestData = json_decode($rawInput, true);

// 判读解析是否成功、必填参数是否存在
if (json_last_error() !== JSON_ERROR_NONE || !isset($requestData['name'], $requestData['email'])) {
    // 可根据业务逻辑返回对应参数错误响应
    die("Invalid request parameters");
}

$name = $requestData['name'];
$email = $requestData['email'];
临时验证方案

如果暂时不想修改后端代码,也可以直接调整Postman请求配置快速验证:

  • 将请求体格式改为form-data或者x-www-form-urlencoded
  • 填写对应的name、email参数后发送请求,此时即可正常通过$_POST读取参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:45:04