我有一个postman (在Chrome中没有打开的postman ),我正在try 使用原始JSON进行POST请求.

在Body选项卡中,我 Select 了"raw"和"JSON(application/json)",主体如下:

{
    "foo": "bar"
}

头球我有1Content-Type: application/json

在PHP方面,我现在只做了print_r($_POST);个,得到了一个空array.


如果我使用jQuery并执行以下操作:

$.ajax({
    "type": "POST",
    "url": "/rest/index.php",
    "data": {
        "foo": "bar"
    }
}).done(function (d) {
    console.log(d);
});

我得到了预期的结果:

Array
(
    [foo] => bar
)

那为什么postman 不在呢?


postman 截图:

enter image description here

和标题:

enter image description here

推荐答案

jQuery不同的是,为了读取RAW JSON,您需要在PHP中对其进行解码.

print_r(json_decode(file_get_contents("php://input"), true));

php://input是一个只读流,允许您从请求主体读取原始数据.

$_POST是表单变量,您需要切换到postman中的form单选按钮,然后使用:

foo=bar&foo2=bar2

要发布包含jquery的原始json,请执行以下操作:

$.ajax({
    "url": "/rest/index.php",
    'data': JSON.stringify({foo:'bar'}),
    'type': 'POST',
    'contentType': 'application/json'
});

Php相关问答推荐

谷歌云SQL / mysql谁是对的?

打印SQL表内容时在DIV内添加断点

PHP FFI—Convert void * to int

无法使用DOMPDF在PDF中呈现非ANSI字符

Nginx重写扩展名为.php的动态URL

Laravel;Composer安装突然返回选项快捷方式不能为空.

WooCommerce管理订单列表自定义列不显示值

获取并判断WooCommerce用户订阅结束日期

如何确保所有语言文件都使用Laravel中的新密钥进行更新?

如何在execute语句中使用存储过程参数?

设置WordPress最近的帖子小部件按修改日期排序

Laravel自定义验证规则更正

防止同时从Laravel中的用户帐户中提取

为什么PHP PDO忽略NOT NULL约束?

在具有Angular 的 Laravel 应用程序中,不显示图像

如何在 PHP 中对具有相同数组值的值求和

在 PHP 8.2 中使用 PHP Spreadsheet 和 CodeIgniter 3 导出 Excel 时出错

如何在WooCommerce中为访客购买者分配自定义客户代码

Laravel 10 单元测试看不到来自 Artisan Command 的数据库更改

PHP Loop 在迭代中使用修改后的数据