Marc B является правильным, однако, что происходит в том, что массив $ _POST будет содержать пустое значение с набором ключей в строку JSON вы передаете ...
Array
(
[{"order":"foobar"}] =>
)
Вы " может»захватить, что (хотя это было бы неправильный подход), получив ключ, используя ...
key($_POST)
, например:
$obj = json_decode(key($_POST));
echo $obj->order;
НО, что вы можете сделать, это отправить данные в качестве значений ключевых пар:
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
let order = 'order=foobar';
this.http.post('http://myserver/processorder.php', order, {
headers: headers
}).subscribe(res => {
console.log('post result %o', res);
});
Тогда в PHP вы можете получить данные с помощью:
$_POST['order']
Несколько вещей отметить:
- изменен заголовок Content-Type в application/x-www-form-urlencoded (больше для моего собственного тестирования, так как это не делает никаких предпродажных запросов)
- обратите внимание, что порядка является значение ключа пара строки вместо JSON
- обратите внимание, что заказ в this.http.post становится передаются как есть без JSON.stringify
PHP ожидает разместить данные, чтобы быть в 'ключ = value', когда он строит $ _POST. вы не отправили это сообщение, вы отправили сырую строку json, которая в основном является только компонентом 'value'. поскольку нет 'key', php не может помещать что-либо в' $ _POST', потому что элемент массива должен иметь ключ. вы могли бы, вероятно, получить json, прочитав из 'php: // input'. –