我的nodejs实例中有接收post请求(成功)的代码,还显示了通过json发送的参数(我需要服务器端的body解析器)。一旦收到post请求,我立即执行return "testing";
检查是否成功返回值。但是,my angular2回调(如图所示)不会触发或显示任何日志。知道为什么吗?
var to_send = JSON.stringify({"test": argument});
var headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http
.post('http://localhost:8080/',
to_send, {
headers: headers
})
.map((res) => res.json() )
.subscribe(
(response) => { console.log("Success Response" + response)},
(error) => { console.log("Error happened" + error)},
() => { this.parseResponse(res); }
);
函数parseResponse只是console.logs(“返回的内容”);
编辑:
下面是我的代码现在的情况,仍然失败(parseResponse中没有触发日志):
var to_send = JSON.stringify({"test": argument});
var headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http
.post('http://localhost:8080/',
to_send, {
headers: headers
})
.map((res) => res.json() )
.subscribe(
(response) => { console.log("Success Response",response)},
(error) => { console.log("Error happened",error)},
() => { this.parseResponse(res); }
);
在我的服务器中,我将返回以下内容:
var to_return = {};
to_return["message"] = "success";
return to_return;
不过,这根本不起作用。知道为什么吗?
parseResponse
是一个简单的日志“收到的反馈”… 最佳答案
你做
this.http...
.map((res) => res.json() )
这样,您就可以将响应转换为
json
,因为它不是json
,所以失败了。您可以使用方法text()
来获取字符串:.map((res) => res.text())
或者可以从后端返回对象:
return {result: "testing"}
读取
result
内部的字段subscribe
更新:
您可以在
res
方法中输出map
以查看它真正包含的内容:.map((res) => {
console.log(res);
return res.json();
})
还有一件事:call
this.parseResponse(res)
;res
不在此范围内。它将undefined
内部parseResponse