I try to post data from angular 2 to php:
let headers = new Headers();
headers.append(\'Content-Type\', \'application/json\');
var order = {\'order\': this.o
Agreed with you that we can't at the moment provide object instead of string. It's a feature in progress. See this issue:
Regarding your problem to get JSON data on the server side, this question should help you:
Marc B is correct, however what is happening is that the $_POST array will contain an empty value with a key set to the JSON string you are passing...
Array
(
[{"order":"foobar"}] =>
)
You "can" grab that (although this would be the wrong approach) by getting the key using...
key($_POST)
for example:
$obj = json_decode(key($_POST));
echo $obj->order;
BUT what you can do is send the data as value key pairs:
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);
});
Then in PHP you can grab the data using:
$_POST['order']
Few things to note:
I do not know if it's bad practice but it seems right to me, although it bothers me a little
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))
And in php
$post = json_decode($_POST['data']);