如何使用Angular 4发布帖子请求?

时间:2017-10-10 15:22:40

标签: javascript php angular typescript post

我正在尝试使用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变量始终为空数组

2 个答案:

答案 0 :(得分:0)

请参阅the documentation

  

如果请求配置对象的data属性包含对象,请将其序列化为JSON格式。

  

$ httpProvider.defaults.headers.post :( POST请求的标头默认值)   Content-Type:application / json

Angular将数据编码为JSON,而不是PHP将自动解析为$_POST的数据格式之一。

您需要parse JSON as described in this answer

答案 1 :(得分:0)

PHP超级全局$_POST,只能包装application/x-www-form-urlencodedmultipart/form-data-encoded的数据。

但如果请求的Content-Type是其他任何内容。你需要使用:

$post = file_get_contents('php://input');

有关详细信息,请查看以下答案:https://stackoverflow.com/a/8893792/2394254