从JSON响应中获取未定义

时间:2018-08-13 19:22:40

标签: angular typescript ionic-framework ionic2

设置客户端进行注册。 这是注册客户端的功能。

  registerAsClient(){
  this.loading =this.loadingCtrl.create({
   content:"Setting up Account"
  });
this.loading.present();
this.buildClientData();
console.log(this.clientData);
this.auth.store('clients', this.clientData).subscribe((response)=>{

  this.clients = response.json();

这是为了显示注册到控制台后服务器的响应。

  console.log("Client ID : " + this.clients['clientId']);
  console.log("Savings Account ID : " + this.clients['savingsAccountId']);

  localStorage.setItem('clientID', this.clients['clientId']);
  localStorage.setItem('officeID', this.clients['officeId']);
  localStorage.setItem('savingsAccountID', this.clients['savingsAccountId']);

  setTimeout(()=>{
    this.loading.dismissAll();
    this.toastrCtrl.messenger('Successfully Registered'); 
    localStorage.setItem('registered', 'true');
    this.navCtrl.push(HomePage);
       },5000)
  },error=>{
    if(error.status === 403){
      this.loading.dismissAll();
      this.toastrCtrl.messenger("Phone number already exists. Please use another");
    }else
     this.loading.dismissAll();
     this.toastrCtrl.messenger('Service unavailable. Please try again later'); 
     console.log(error);
      // alert(JSON.stringify("Error is  :" + error));
})
}

这是来自控制台注册的响应 我可以获取客户ID,但储蓄帐户ID显示为未定义。

Client ID : 104 
Savings Account ID : undefined
使用端点进行测试时,

json响应。

{
"id": 89,
"accountNo": "000000089",
 "status": {
"id": 300,
"code": "clientStatusType.active",
"value": "Active"
 },
 "subStatus": {
"active": false,
"mandatory": false
 },
"active": true,
"activationDate": [
  2018,
  8,
 13
 ],
 "firstname": "Albertina",
 "lastname": "Ben-Patterson",
 "displayName": "Albertina Ben-Patterson",
 "mobileNo": "0201234598",
 "gender": {
  "active": false,
  "mandatory": false
 },
 "clientType": {
 "active": false,
 "mandatory": false
  },
  "clientClassification": {
"active": false,
"mandatory": false
 },
"isStaff": false,
 "officeId": 10,
 "officeName": "Greater Accra Region",
 "timeline": {
 "submittedOnDate": [
  2018,
  8,
  13
 ],
"submittedByUsername": "admin",
"submittedByFirstname": "App",
"submittedByLastname": "Administrator",
"activatedOnDate": [
  2018,
  8,
  13
],
"activatedByUsername": "admin",
"activatedByFirstname": "App",
"activatedByLastname": "Administrator"
},
"savingsAccountId": 8,
"groups": [],
"clientNonPersonDetails": {
 "constitution": {
  "active": false,
  "mandatory": false
 },
  "mainBusinessLine": {
  "active": false,
  "mandatory": false
 }
}
}

非常感谢您的帮助。

谢谢。

2 个答案:

答案 0 :(得分:0)

在我的本地系统中尝试了您的代码,但是我没有发现任何可疑的东西。 我想您最好在检索 savingsAccountId 时检查一下代码的拼写。 ID-> ID

localStorage.setItem('savingsAccountID', this.clients['savingsAccountId'])

localStorage.getItem('savingsAccountID');

此外,始终建议从后端生成错误消息,这将使您免于日后的麻烦。

答案 1 :(得分:0)

我发现您的clientId主体中没有键为json的属性,它为id,所以我认为您正在尝试从另一个json打印/获取数据包含clientId键且不包含savingsAccountId键的正文。