I want to connect my angular2 app to my PHP backend. Ideally I want to do this:
this.http.post('/users/create', {email: email, password: password});
The problem is, when I do this my $_POST
is empty in PHP. What must I do to make this work?
I want to connect my angular2 app to my PHP backend. Ideally I want to do this:
this.http.post('/users/create', {email: email, password: password});
The problem is, when I do this my $_POST
is empty in PHP. What must I do to make this work?
Angular's http implementation sends data as an application/json
payload. to read such data from php, you have to use this kind of code :
$data = json_decode(file_get_contents("php://input"));
// you can even override the `$_POST` superglobal if you want :
$_POST = json_decode(file_get_contents("php://input"));
if you want to send your data as application/x-www-form-urlencoded
and then be able to read it from php's $_POST
superglobal without any change to your server code, you need to encode your data as such.
const body = new URLSearchParams();
Object.keys(value).forEach(key => {
body.set(key, value[key]);
}
let headers = new Headers();
headers.append('Content-Type','application/x-www-form-urlencoded');
this._http.post(this._contactUrl, body.toString(), {headers}).subscribe(res => console.log(res));
I mean with jQuery for example it works with $_POST and json objects
it does not work with json object, if you can read data via $_POST
, it means it has been sent as application/x-www-form-urlencoded
, not application/json
, parameters are set as a plain js object though...
you can use php://input for the post data with angular2 like this and json_decode by this
$arr = json_decode(file_get_contents('php://input'),TRUE);
echo "<pre>";print_r($arr);exit;
so by this $arr prints the whole post array and used it anywhere you want.