Read Angular2 POST data in PHP [duplicate]

匿名 (未验证) 提交于 2019-12-03 01:22:02

问题:

This question already has an answer here:

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?

回答1:

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...



回答2:

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.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!