我正在尝试使用Angular 4发布一个帖子请求,并使用此代码发送lat和lng参数:
let data = {lat: this.newLat, lng: this.newLng};
this.http.post(url, data)
.map(response => response.json())
.subscribe(getResponse => console.log(getResponse));
在服务器端,我有以下php片段:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
if ( isset($_POST['lat'], $_POST['lng']) ) {
$response['msg'] = 'ok';
} else {
$response['msg'] = 'not ok';
}
echo json_encode($response);
遗憾的是,服务器的响应始终为'not ok'
。任何想法如何解决这个问题? $_POST
变量始终为空数组
答案 0 :(得分:0)
如果请求配置对象的data属性包含对象,请将其序列化为JSON格式。
和
$ httpProvider.defaults.headers.post :( POST请求的标头默认值) Content-Type:application / json
Angular将数据编码为JSON,而不是PHP将自动解析为$_POST
的数据格式之一。
答案 1 :(得分:0)
PHP超级全局$_POST
,只能包装application/x-www-form-urlencoded
或multipart/form-data-encoded
的数据。
但如果请求的Content-Type
是其他任何内容。你需要使用:
$post = file_get_contents('php://input');
有关详细信息,请查看以下答案:https://stackoverflow.com/a/8893792/2394254