Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 我如何从爱奥尼亚的承诺中返回价值_Typescript_Ionic Framework - Fatal编程技术网

Typescript 我如何从爱奥尼亚的承诺中返回价值

Typescript 我如何从爱奥尼亚的承诺中返回价值,typescript,ionic-framework,Typescript,Ionic Framework,我在从返回的http响应中获取值时遇到问题-我试图使用Promise从web服务获取数据,但在控制台中预览时,它表示未定义 在响应主体中,这是返回的内容: {"data":[{ "loginStatus":"Valid", "CustomerName":"Fagbemi Ayodele", "Mobile":null, "Email":"fagbemiayodele48@gmail.com", "CustomerID":"3" }]} a

我在从返回的http响应中获取值时遇到问题-我试图使用Promise从web服务获取数据,但在控制台中预览时,它表示未定义

在响应主体中,这是返回的内容:

{"data":[{
     "loginStatus":"Valid",
     "CustomerName":"Fagbemi Ayodele",
     "Mobile":null,
     "Email":"fagbemiayodele48@gmail.com",
     "CustomerID":"3"
   }]}
auth-service.ts

login.ts


控制台在循环结束之前执行,这就是为什么它变为空白。使用async wait获得正确的结果。

您的电子邮件变量是if语句的本地变量。如果未定义,则在外部。在if内访问控制台打印,或在if外声明电子邮件-在if之前

检查

请声明var电子邮件=[];在if区外

如果要在使用前检查所需变量是否已声明,请尝试添加use strict;作为javascript文件的第一个。添加“使用严格”后;,如果尝试使用不在范围内的变量,脚本将引发异常。 请参阅和文档


希望这能有所帮助。

因为你已经完全重新考虑了你的问题,我之前的答案不再有效

从您的响应正文中,很明显响应对象属性数据结果['data']是数组,而不是对象。因此,您无法访问this.data.loginStatus

您应该使用此.data[0].loginStatus从API响应访问登录状态。 另外,在使用数据之前,不要忘记检查数据的长度data.length>0


希望能有帮助

也许您在设置变量之前就使用了它,但是仍然有未定义的可以粘贴1。您可以在使用strict 2之后进行控制台输出。删除敏感内容后的实际代码?仍然未定义。@FAGBEMIAYODLE是否确定globalData中包含有效数据?检查这把小提琴:
login(credentials) {
  return new Promise((resolve, reject) => {
      this.http.post(apiUrl + '/login.php', JSON.stringify(credentials))
        .subscribe(res => {
          resolve(res.json());

        }, (err) => {
          reject(err);
        });
    });

  }
this.authService.login(this.loginData).then((result) => {
        this.data = result['data'];
        console.log("Result: "+ this.data.loginStatus);

        if (this.data.loginStatus == 'Valid') {
          localStorage.setItem('loginStatus', this.data.loginStatus);
          localStorage.setItem('CustomerName', this.data.CustomerName);
          this.navCtrl.setRoot(MyApp);
          this.loading.dismiss();
        }

        else {
          this.loading.dismiss();
        }
      }, (err) => {
        this.loading.dismiss();
        this.presentToast(err);
      });