我有Postman(在Chrome中没有打开的那个),我正在尝试使用原始json进行POST请求.
在Body选项卡中,我选择了“raw”和“JSON(application / json)”这个正文:
{
"foo": "bar"
}
对于标题我有1,Content-Type:application / json
在PHP方面我只是在做print_r($_ POST);现在,我得到一个空数组.
如果我使用jQuery并执行:
$.ajax({
"type": "POST",
"url": "/rest/index.php",
"data": {
"foo": "bar"
}
}).done(function (d) {
console.log(d);
});
我得到了预期的结果:
Array
(
[foo] => bar
)
那么为什么它不与Postman合作?
邮差截图:
和标题:
解决方法:
与jQuery不同,为了读取原始JSON,您需要在PHP中对其进行解码.
print_r(json_decode(file_get_contents("php://input"), true));
php:// input是一个只读流,允许您从请求正文中读取原始数据.
$_POST是表单变量,你需要在postman中切换到radiobutton然后使用:
foo=bar&foo2=bar2
使用jquery发布原始json:
$.ajax({
"url": "/rest/index.php",
'data': JSON.stringify({foo:'bar'}),
'type': 'POST',
'contentType': 'application/json'
});
标签:php,json,rest,postman
来源: https://codeday.me/bug/20190928/1827032.html