如何将响应json值分配给angular 4

时间:2017-08-04 11:36:56

标签: javascript json angular typescript

我是角色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'

之类的值

6 个答案:

答案 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 :
   }
);