我的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();
})

还有一件事:callthis.parseResponse(res)res不在此范围内。它将undefined内部parseResponse

07-28 09:34