![](/img/trans.png)
[英]I can send data using body raw but not using formdata using post method in postman
[英]Send POST data via raw JSONwith Postman
我有 Postman(那个不能在 Chrome 中打开的),我正在尝试使用原始 JSON 执行 POST 请求。
在正文选项卡中,我选择了“原始”和带有此正文的“JSON(应用程序/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
切换到form
单选按钮然后使用:
foo=bar&foo2=bar2
要使用jquery
发布原始json
:
$.ajax({
"url": "/rest/index.php",
'data': JSON.stringify({foo:'bar'}),
'type': 'POST',
'contentType': 'application/json'
});
meda 的回答完全合法,但是当我复制代码时出现错误!
在"php://input"
某处有一个无效字符(可能是引号之一?)。
当我手动"php://input"
代码时,它起作用了。 我花了一段时间才弄清楚!
我遇到了同样的问题,以下代码对我有用:
$params = (array) json_decode(file_get_contents('php://input'), TRUE);
print_r($params);
安装 Postman 原生应用,Chrome 扩展已被弃用。 (我的在自己的窗口中打开,但仍作为 Chrome 应用程序运行)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.