使用PHP我通过使用:
来回应SQL Server的响应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”对象,其中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代码有关...
答案 0 :(得分:0)
我道歉 - 如果其他人在同一点陷入困境,答案非常简单。您使用' .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()'返回一个对我来说更好的对象数组。