Я хочу подключить мое приложение angular2 к моему PHP-серверу. В идеале я хочу это сделать:
this.http.post('/users/create', {email: email, password: password});
Проблема в том, что когда я это делаю, мой $_POST
пуст в PHP. Что я должен сделать, чтобы сделать эту работу?
Утилита HTTP с угловым адресом отправляет данные как полезную нагрузку application/json
. для чтения таких данных из php, вы должны использовать такой код:
$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"));
если вы хотите отправить свои данные в виде application/x-www-form-urlencoded
а затем сможете прочитать его из $_POST
файла php's $_POST
без каких-либо изменений кода сервера, вам необходимо закодировать свои данные как таковые.
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));
Я имею в виду, что jQuery, например, работает с объектами $ _POST и json
он не работает с json-объектом, если вы можете читать данные через $_POST
, это означает, что он был отправлен как application/x-www-form-urlencoded
, а не application/json
, параметры заданы как простой js-объект, хотя .. ,
вы можете использовать php: // для данных post с угловым2, подобным этому, и json_decode
$arr = json_decode(file_get_contents('php://input'),TRUE); echo "<pre>";print_r($arr);exit;
поэтому этим $ arr печатает весь массив сообщений и использует его в любом месте.