离子 http.post 并将结果映射到 json



我正在尝试使用 http.post

,如 https://ionicframework.com/docs/native/http/中所述我进行 API 调用,我应该返回一些 JSON,然后如果data.statussuccess,那么我在本地存储中设置一个元素,然后更改根。

尝试ionic serve时出现两个错误

运算符"=="不能应用于类型"数字"和"字符串"。

这与if(data.status == 'success') {线有关

属性"token"在

类型"HTTPResponse"上不存在。

这与this.storage.set('myToken', data.token);线有关

我的完整代码如下。似乎data不应该被json

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { HTTP } from '@ionic-native/http';
import { FixturesPage } from '../fixtures/fixtures';
import { Storage } from '@ionic/storage';
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
email: string;
password: string;  
constructor(public navCtrl: NavController, public navParams: NavParams, public http: HTTP, private storage: Storage) {
}
loginNow() {
this.http.post('https://api.domain.com/login', { email: this.email, password: this.password } , { headers: { 'Content-Type': 'application/json' } } ).then(data => {
if(data.status == 'success') {
this.storage.set('myToken', data.token);
this.navCtrl.setRoot(FixturesPage);
} else {
alert("Your login details are incorrect");
}
}); 
}
}

您应该将响应映射到 json。为此,请导入 rxjs map 运算符,然后将其添加到您的 post 请求中:

loginNow() {
this.http.post('https://api.domain.com/login', { email: this.email, password: this.password } , { headers: { 'Content-Type': 'application/json' } } ).then(data => {
if(data.data.status == 'success') {
this.storage.set('myToken', data.data.token);
this.navCtrl.setRoot(FixturesPage);
} else {
alert("Your login details are incorrect");
}
}); 
}

编辑正如文档所述,您需要使用响应的data属性

相关内容

  • 没有找到相关文章

最新更新