Angularjs 如何在Angular2中进行HTTP POST调用并打印响应

Angularjs 如何在Angular2中进行HTTP POST调用并打印响应,angularjs,angular,Angularjs,Angular,我是Angular2的新手,正在构建一个示例项目来学习它。我现在正在研究如何在Angular2中进行HTTP调用,并发现以下代码片段示例: var headers = new Headers(); headers.append('Content-Type', 'application/json'); this.http.post('http://www.syntaxsuccess.com/poc-post/', JSON.stringify({fi

我是Angular2的新手,正在构建一个示例项目来学习它。我现在正在研究如何在Angular2中进行HTTP调用,并发现以下代码片段示例:

var headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post('http://www.syntaxsuccess.com/poc-post/', 
                       JSON.stringify({firstName:'Joe',lastName:'Smith'}),
                       {headers:headers})
.map((res: Response) => res.json())
.subscribe((res:Person) => this.postResponse = res);
我不确定订阅是做什么的,但我的主要目标是打印回复。从这段代码中我可以看到响应,但我不确定如何“隔离并访问它”(我希望这是有意义的)。我的问题是如何将响应打印到控制台

我的问题是如何将响应打印到控制台

您只需打印
res

.subscribe((res:Person) => { this.postResponse = res; console.log(res); });


我不确定订阅是做什么的(…)

其结果是一个错误

在您的代码中,您选择POST的结果(一个可观察的
)并调用它。在您的例子中,您这样做是为了将响应解析为JSON并将其转换为对象:

.map((res: Response) => res.json())
现在,
.map()
的结果也是一个可观察的
。这时您可以调用
subscribe

是该类的一种方法,它允许您典型地“注册”或“订阅”三个函数,它们将处理/读取此可观察对象发出的结果(或“事件”)——它们被称为(on)
next
,(on)
error
和(on)
complete

因此,使用
.subscribe()
的代码通常是:

.subscribe(
     (response) => {
            /* this function is executed every time there's a new output */
           console.log("VALUE RECEIVED: "+response);
     },
     (err) => {
            /* this function is executed when there's an ERROR */
            console.log("ERROR: "+err);
     },
     () => {
            /* this function is executed when the observable ends (completes) its stream */
            console.log("COMPLETED");
     }
 );

因此,为了全面理解Angular2的Http,我建议您阅读上的一些参考资料。当你从中恢复过来,事情会简单得多,我保证(没有双关语的意思:)。

谢谢你的回答!有一个问题,因为我只想在响应完成后打印它,在最后一个函数(已完成)中,我如何访问其中的响应?典型地,http调用只发送一个响应,这意味着第一个函数(接收值为“
”的函数)将只调用一次,第三个函数(已完成值为“
”的函数)将只调用一次
)将立即被调用。感谢您提供的信息!拜托,如果我不想用订阅怎么办?订阅有什么办法吗?@OniyaDaniel你为什么要这样?