【问题标题】:Processing http post array, display undefined处理http post数组,显示未定义
【发布时间】:2018-07-12 18:27:37
【问题描述】:

我有一个大问题。我想显示这个 json,但返回未定义的值。

{"StatusCode":0,"StatusMessage":"OK","StatusDescription":{ "datas": [
{"sensor_serial":"SensorSerial1", "id":"11E807676E3F30B5"},
{"sensor_serial":"sensorserial2", "id":"11E807679D82841L"},
{"sensor_serial":"sensorserial3", "id":"11E80767A5CD2820"} ]
,"home_id":"11E80768K", "active":0, "homebox_id":"11E8076792BD0164J",
"date_created":"2018-02-01T15:55:54.000Z", "date_modified":null,
"serial_number":"serialn1", "user_id":"3"} }

我在 service.ts 中使用此代码

public getHomeboxPById(id: string): Observable<HomeboxP> {
    let headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    let urlSearchParams = new URLSearchParams();
    urlSearchParams.append('home_id', id);
    urlSearchParams.append('token', this.auth.getCurrentUser().token);
    let body = urlSearchParams.toString();
    return this.http.post(Api.getUrl(Api.URLS.getHomeboxPById), body, {
    headers: headers
    })
    .map((response: Response) => {
        let res = response.json();
        if (res.StatusCode === 0) {
         return new HomeboxP(res.StatusDescription[0]);
        } else if (res.StatusCode === 1) {
         this.auth.logout();
        } else {
           return new HomeboxP(null);
        }
    });
}

在ts代码中我调用这个方法getHomeboxPById,像这样

editHomeboxPForm: FormGroup;
homeboxp: HomeboxP;
    this.editHomeboxPForm = this.fb.group({
      'homebox_id': new FormControl('', Validators.required)
    });
}

populateFormHomeboxP() {
    this.activatedRoute.params.subscribe(
    params => {
    this.ws.getHomeboxPById(params['id']).subscribe(
     homeboxp => {
        console.log(homeboxp);  // display undefined
        this.homeboxp = homeboxp;
        this.editHomeboxPForm.controls['homebox_id'].setValue(homeboxp.homebox_id);
        }
      );
     }
   );   
}

拜托,你能帮我吗,为什么不起作用?

【问题讨论】:

  • 有错误码吗?请描述“它不起作用”的原因。

标签: arrays json angular typescript post


【解决方案1】:
{"StatusCode":0,"StatusMessage":"OK","StatusDescription":{ "datas": [
{"sensor_serial":"SensorSerial1", "id":"11E807676E3F30B5"},
{"sensor_serial":"sensorserial2", "id":"11E807679D82841L"},
{"sensor_serial":"sensorserial3", "id":"11E80767A5CD2820"} ]
,"home_id":"11E80768K", "active":0, "homebox_id":"11E8076792BD0164J",
"date_created":"2018-02-01T15:55:54.000Z", "date_modified":null,
"serial_number":"serialn1", "user_id":"3"} }

如果这是

的回应
this.http.post(Api.getUrl(Api.URLS.getHomeboxPById)

那么问题是res.StatusDescription[0],应该是res.StatusDescription,比如:

new HomeboxP(res.StatusDescription);

【讨论】:

  • 谢谢Vivek,这是个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-15
  • 2015-10-13
  • 2010-12-08
相关资源
最近更新 更多