代码之家  ›  专栏  ›  技术社区  ›  Lee Merlas

ionic 3-无法在http请求内创建警报

  •  0
  • Lee Merlas  · 技术社区  · 7 年前

    因此,我将本机HTTP cordova插件用于我的HTTP请求。但我似乎无法解决无法在onFail函数中创建警报的问题。还有其他人经历过吗?

    错误显示:

    Error in Error callbackId: CordovaHttpPlugin1608257770 : TypeError: Cannot 
    read property 'alertCtrl' of undefined
    

    下面是我如何构建代码的:

    cordova.plugin.http.sendRequest('http://127.0.0.1:5000/api/login/', options, function(response) {
    
            try {   //onSuccess
                response.data = JSON.parse(response.data);
    
                localStorage.setItem('token', JSON.stringify(response.data.token));
    
              } catch(e) {
                console.error('JSON parsing error');
              }
            },  function(response) {    //onFail
                console.log('403');
    
                let alert = this.alerts.create({
                    title: 'Error',
                    subTitle: 'Username/password is invalid!',
                    buttons: ['Dismiss']
                });
                alert.present();
    
            }
        );
    

    我的构造函数是这样的:

    constructor(public navCtrl: NavController,
                private alerts: AlertController, 
                private http: HTTP, 
                private store: Storage, 
                ) {}
    

    是什么导致它不起作用?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Phd. Burak Öztürk    7 年前

    试试这个,因为当您在请求中创建警报时,“this”表示httprequest,所以它没有警报类

            let alert = this.alerts.create({
                title: 'Error',
                subTitle: 'Username/password is invalid!',
                buttons: ['Dismiss']
            });
    
    cordova.plugin.http.sendRequest('http://127.0.0.1:5000/api/login/', options, function(response) {
    
            try {   //onSuccess
                response.data = JSON.parse(response.data);
    
                localStorage.setItem('token', JSON.stringify(response.data.token));
    
              } catch(e) {
                console.error('JSON parsing error');
              }
            },  function(response) {    //onFail
                console.log('403');
                alert.present();
    
            }
        );