Я пытаюсь опубликовать данные из угловых 2 на php:
let headers = new Headers();
headers.append('Content-Type', 'application/json');
var order = {'order': this.orders};
this.http.post('http://myserver/processorder.php', JSON.stringify(order), {
headers: headers
}).subscribe(res => {
console.log('post result %o', res);
});
В угловых 2 можно только разместить строку как данные, а не Json? Это нормально для меня, но я изо всех сил пытаюсь получить опубликованные данные на php. Я старался $obj = $_POST['order'];
Марк Б прав, но в массиве $ _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']
Несколько вещей, чтобы отметить:
Я не знаю, является ли это плохой практикой, но мне это кажется правильным, хотя это немного беспокоит меня
const headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
const obj = { nome: 'gabriel', age: 20 };
const body = 'data=' + JSON.stringify(obj);
this.http.post('/test.php', body, { headers })
.subscribe(res => console.log(res.json()), res => console.error(res))
И в php
$post = json_decode($_POST['data']);
Договорились с вами, что в данный момент мы не можем предоставить объект вместо строки. Это функция в процессе. Смотрите эту проблему:
Что касается вашей проблемы с получением данных JSON на стороне сервера, этот вопрос должен помочь вам: