【发布时间】:2017-02-27 22:25:11
【问题描述】:
我正在尝试进行 HTTP POST,然后检查响应以查看它是失败还是成功。
HTTP 调用如下所示:
doLogin(credentials) {
var header = new Headers();
header.append('Content-Type', 'application/x-www-form-urlencoded');
var body = 'username=' + credentials.username + '&password=' + credentials.password;
return new Promise((resolve, reject) => {
this.http.post(this.url, body, {
headers: header
})
.subscribe(
data => {
resolve(data.json());
},
error => {
resolve(error.json());
}
);
});
}
这个函数的调用如下:
data: Object;
errorMessage: Object;
login($event, username, password) {
this.credentials = {
username: username,
password: password
};
this._loginService.doLogin(this.credentials).then(
result => {
this.data = result;
console.log(this.data);
},
error => {
this.errorMessage = <any>error;
console.log(this.errorMessage);
});
}
在 Chrome 控制台上,数据如下:
Object {status: "Login success", token: "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJjcmlzdGkiLCJ1c2VyS…blf1AzZ6KzRWQFNGXCrIeUHRG3Wrk7ZfCou135WmbVa15iYTA"}
如何访问 Angular 2 中的状态?因为如果我尝试访问this.data.status,它就无法正常工作。
我应该创建一个具有状态和令牌属性的类吗?
【问题讨论】:
-
在哪里你想访问
this.data.status?在回调内部?你知道“异步”是什么意思吗,或者为什么你必须订阅和提供回调? -
你可以试试下面的。将
result =>更改为(result:any) =>。然后console.log(this.data.status); -
什么不起作用?有错误信息吗?你可以创建一个不需要类的接口。
-
@jonrsharpe 我必须使用 subscribe 才能完成 http 请求,不是吗?
标签: json angular angular2-http