我是角色4的新手。我正在尝试使用http.post
获取JSON值。
回复是:{"status":"SUCCESS"}
组件
onSubmit(value: any) {
console.log("POST");
let url = `${this.posts_Url}`;
this.http.post(url, value)
.subscribe(resBody => {
this.model.authstatus = resBody.json();
console.log("Values====="+this.model.authstatus);
});
}
我正在Values====={"status":"Failure"}
如何指定this.model.authstatus = 'Failure'
答案 0 :(得分:1)
onSubmit(value: any) {
console.log("POST");
let url = `${this.posts_Url}`;
this.http.post(url, value)
.subscribe(resBody => {
this.model.authstatus = resBody.json().Status;
console.log("Values====="+this.model.authstatus);
});
}
This will give output as
Values===== 'Faliure'
in console
答案 1 :(得分:0)
this.http.post
是一个asynchrounus请求,这意味着this.model.authstatus
只有在您按照此方式记录时才会为空。
您可以在请求期间记录您的值以显示正确的数据。
this.http.post(url, value).subscribe(resBody => {
this.model.authstatus = resBody.json
console.log("Values====="+this.model.authstatus);
});
答案 2 :(得分:0)
编辑:当你在响应json中忘记{"status":"Faliure"}
时,你可以使用下面的代码将状态分配给this.model.authstatus
this.http.post(url, value).
subscribe((resBody:any) => {
this.model.authstatus = resBody.json().status;
console.log(this.model.authstatus);
}
);
答案 3 :(得分:0)
这是一个异步调用,您希望在请求完成之前console.log
结果。
onSubmit(value: any) {
console.log("POST");
let url = `${this.posts_Url}`;
this.http.post(url, value).subscribe(resBody => this.model.authstatus = resBody.json); // This will happen after the request is finished, ~100ms later
console.log("Values====="+this.model.authstatus); //This will happen right now, when this.model.authstatus is still undefined
}
要解决此问题,只需在http呼叫订阅中移动console.log
:
this.http.post(url, value).subscribe(resBody => {
this.model.authstatus = resBody.json();
console.log(this.model.authstatus
});
答案 4 :(得分:0)
因为您正在执行异步调用,所以您的代码会执行它,但会继续执行。它等待响应。所以你应该在订阅中执行console.log(),因为当响应到来时,执行subscribe内部函数。
onSubmit(value: any) {
console.log("POST");
let url = `${this.posts_Url}`;
this.http.post(url, value)
.subscribe(resBody => {
this.model.authstatus = resBody.json;
console.log("Values====="+this.model.authstatus);
});
}
答案 5 :(得分:-1)
this.http.post(url, value).
subscribe((resBody:any) => {
this.model.authstatus = resBody.json();
console.log(this.model.authstatus);
return this.model.authstatus :
}
);