15

これを送信するためにcurlを使用しています:

curl -i -H "Accept: application/json" -H "Content-type: application/json" -X POST -d "{firstname:james}" http://hostname/index.php

index.php にこのような POST を表示しようとしています。

<?php
die(var_dump($_POST)); 
?>

どの出力

array(0) {
}

JSON データを POST 経由で送信することについて何か誤解しているに違いありません

お時間をいただきありがとうございます

4

2 に答える 2

39

$_POSTPOST 本文を URL エンコード形式で送信した場合にのみ設定される配列です。PHP は JSON 自体を自動的に解析しないため、$_POST配列にデータを入力しません。生の POST 本文を取得し、JSON を自分でデコードする必要があります。

$json = file_get_contents('php://input');
$values = json_decode($json, true);
于 2012-08-16T15:40:27.717 に答える
7

$_POSTエンコードされたフォーム データを送信している場合にのみ機能します。$_POSTJSON を送信しているため、PHP は JSON を配列に解析できません。

POST 本文から直接読み取る必要があります。

$post = fopen('php://input', r);
$data = json_decode(stream_get_contents($post));
fclose($post);
于 2012-08-16T15:40:30.217 に答える