Angular2 Http协议可能无法正确发布

时间:2016-12-14 01:16:02

标签: angular typescript angular2-services angular2-http

所以这是我的http代码:

    let headers = new Headers ({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 
    if (body == null)
    {   
        body = {title: "hi", search: "person"};
    }   
    console.log('body: ' + JSON.stringify(body));

    return this.http.post('app/php/check.php', body, options)
        .toPromise()
        .then(response => response.text())
        .catch(this.handleError);

我不确定服务器是否正确接收数据,但我确信它正在发布我可以看到的内容:

[
  {
    "select": "title",
    "search": "person"
  }
]
与萤火虫。


在我的php文件中,我所做的只是print_r($_REQUEST),但它返回的只是一个空数组。

我有什么问题吗?

奖金问题: 除了.json().text()之外,还有其他任何数据提取功能吗?



更新:

有趣的是,如果我使用网址app/php/check.php?fruit=apple,则会有回复。有人知道这种差异吗?

1 个答案:

答案 0 :(得分:1)

服务器应该接收身体变量中的数据。

以下是如何从函数中检索输出的示例。该示例使用的是JSON输出,但由于我使用的测试API用于发布数据。一个字符串将是相同的只是更改返回部分。

ngOnInit() {
      this.postRquest().then(results => this.response = results);
}

postRquest(body) {
    let headers = new Headers ({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
    let options = new RequestOptions({ headers: headers }); 
    if (body == null)
    {   
        body = {title: "hi", search: "person"};
    }   
    console.log('body: ' + JSON.stringify(body));

    return this.http.post('app/php/check.php', body, options)
        .toPromise()
        .then((response) => return response.json())
        .catch(error => {
          console.log( error );
        });
  }

确保您的内容类型标题为application / x-www-form-urlencoded

Plunker示例: https://embed.plnkr.co/UDYDp0gXx5H9OhmMKicL/