Dal*_*las 90 php rest json postman
我有Postman(在Chrome中没有打开的那个),我正在尝试使用原始json进行POST请求.
在Body选项卡中,我选择了"raw"和"JSON(application/json)"这个正文:
{
"foo": "bar"
}
Run Code Online (Sandbox Code Playgroud)
对于标题我有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);
});
Run Code Online (Sandbox Code Playgroud)
我得到了预期的结果:
Array
(
[foo] => bar
)
Run Code Online (Sandbox Code Playgroud)
那么为什么它不与Postman合作?
邮差截图:
和标题:
med*_*eda 32
与jQuery读取原始文件不同,JSON您需要在PHP中对其进行解码.
print_r(json_decode(file_get_contents("php://input"), true));
Run Code Online (Sandbox Code Playgroud)
php://input 是一个只读流,允许您从请求正文中读取原始数据.
$_POST是表单变量,你需要切换到formradiobutton postman然后使用:
foo=bar&foo2=bar2
Run Code Online (Sandbox Code Playgroud)
要发布的原始json带jquery:
$.ajax({
"url": "/rest/index.php",
'data': JSON.stringify({foo:'bar'}),
'type': 'POST',
'contentType': 'application/json'
});
Run Code Online (Sandbox Code Playgroud)
Ita*_*chi 22
只需从二进制旁边的下拉列表中检查JSON选项即可;当您单击原始时。这应该做
meda的答案是完全合法的,但是当我复制代码时我得到了一个错误!
在某处"php://input"有一个无效的字符(可能是其中一个引号?).
当我"php://input"手动输入代码时,它工作正常.花了一段时间才弄明白!
我遇到了同样的问题,以下代码为我工作:
$params = (array) json_decode(file_get_contents('php://input'), TRUE);
print_r($params);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
223893 次 |
| 最近记录: |