从 PHP 接收 JSON 到 Angular 2 httpmodule

Receiving JSON from PHP to Angular 2 httpmodule

使用 PHP 我正在回应来自 SQL 服务器的响应:

echo json_encode($total);

作为测试,在回显之前,我 运行 error_log(json_encode($total)) 将对象输出为:

[{"address":"Mitchell Hwy",
  "description":"Nyngan Eastbound STC",
  "site_name":"T0242",
  "heading":"East",
  "vehicle_class":"B double",
  "vehicle_class_id":"10",
  "avg_speed":"69.27",
  "volume":"46"}]

这正是我想在 Angular 2 的 http 响应中收到的内容。我的 Angular 2 代码是:

    let headers = new Headers();
    headers.append('Content-Type', 'application/json');

    return this.http.post(url, sentArray,{
      headers: headers
    }).subscribe(
      result => returnedJSON = result,
      () => console.log("Failed..."),
      () => console.log(returnedJSON)
    );

这会在控制台中打印一个 'Response' 对象,其中响应 'body' 是返回的 PHP 我想要的代码。

Response {_body: "[{"address":"Mitchell Hwy","description":"Nyngan E…_id":"Total","avg_speed":"67.35","volume":"262"}]", 
status: 200, 
ok: true, 
statusText: "OK", 
headers: Headers…}

我的问题是: 为什么我会收到一个完整的响应对象?这是因为我使用了 POST HTTP 请求 - 或者只是 Angular 2 接收响应的方式?如何仅隔离响应主体?

我假设我在 PHP 中所做的一切都是正确的,因为我正在记录我想要的确切输出。我认为这与我的 Angular 2 代码有关...

抱歉 - 以防其他人卡在同一点上,答案很简单。您使用“.text()”隔离响应主体。我在这里找到了这个: https://angular.io/docs/ts/latest/api/http/index/Response-class.html

    let headers = new Headers();
    headers.append('Content-Type', 'application/json');

    return this.http.post(url, sentArray,{
      headers: headers
    }).subscribe(
      result => returnedJSON = result.text(), //the '.text()' was the issue.
      () => console.log("Failed..."),
      () => console.log(returnedJSON)
    );

编辑

Harry Ninh 提供了更好的解决方案。使用 'result.json()' 而不是 '.text()'。 'Result.json()' returns 一个对我来说更好的对象数组。