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

为何使用$_POST无法获取数据?PHP数据接口开发问题

为什么PHP发送JSON格式POST请求后,$_POST无法获取数据?

嘿,我明白你遇到的问题了——你用A.php发送了JSON格式的POST请求到B.php,明明能收到响应证明连通性没问题,但B.php里的$_POST就是空的,对吧?

问题根源

PHP的$_POST超全局变量默认只会自动解析两种格式的请求体:

  • application/x-www-form-urlencoded(普通表单提交格式)
  • multipart/form-data(文件上传表单格式)

而你在A.php里设置的Content-Type: application/json,这种格式的请求体PHP不会自动解析到$_POST里,所以你拿到的就是空数组。

解决办法

直接读取原始的请求体内容,再解析成JSON数据就可以了,修改你的B.php代码如下:

// B.php
// 读取原始请求体
$rawJson = file_get_contents('php://input');
// 解析成关联数组(第二个参数true会转成数组,否则是对象)
$data = json_decode($rawJson, true);

// 测试输出
print_r($data);
echo 'I have recieve it';

这样就能正确获取到你从A.php发送的JSON数据了。

额外说明

如果你非要用$_POST来获取数据,那需要修改A.php的请求格式,把JSON改成表单编码格式:

// A.php 修改部分
$options = [
    'http' => [
        'method' => 'POST',
        'content' => http_build_query($data), // 转成表单格式
        'header' => "Content-Type: application/x-www-form-urlencoded\r\n"
    ]
];

但既然你原本就是要发送JSON数据,第一种直接解析原始请求体的方法更贴合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:27:15