![](/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.