2017-10-10 1 views
0

Je suis actuellement en train d'envoyer des messages au serveur via et API qui fonctionne correctement. Mais il y a des moments où je débranche intentionnellement l'Internet pour voir si mon pop fonctionnera mais il échoue.Fonction continuer à fonctionner même avec une connexion Internet IONIC2

register(){ 
    this.loc_address=localStorage.getItem('user_location'); 
    this.farmer_photo=localStorage.getItem('farmer_photo'); 
      let loader = this.LoadingController.create({ 
      content: 'Please Wait' 
      }); 
      loader.present().then(()=>{ 

      this.http.post("http://loclahost/app/farmer.php", { 
      'farmer_passcode':this.farmer_passcode, 
      'farmer_photo':this.farmer_photo}).map(res => res.json()) .subscribe(data => { 
       console.log(JSON.stringify(data[0].ID)); 
       this.get_farmer_id=data[0].ID; 

      this.http.post("http://localhost/app/add.php", { 
      'farm_name': this.farm_name, 
      'farm_address':this.loc_address}).map(res => res.json()) .subscribe(data => { 
      console.log(JSON.stringify(data)); 
      loader.dismiss(); 
      let toast = this.toastcontroller.create({ 
      message:'Farmer registration was successful', 
      duration:3000, 
      position:'bottom' 
      }); 
      toast.present(); 

     }),error=>{ 
      loader.dismiss(); 
      let alert = this.alertCtrl.create({ 
      title: 'Error!', 
      subTitle: 'Please check your Internet Connectivity', 
      buttons: ['Try Again'] 
      }); 
      alert.present(); 
     } 
     }) 


     }) 
    } 
+0

-t-il montre votre alerte d'erreur? –

+0

non, il ne montre pas l'alerte – user6579134

Répondre

0

Quel est le problème avec votre code est que le rappel d'erreur n'est pas déclenché au bon endroit. Cela ne génère-t-il pas une erreur avec ce code? Parce que votre callback d'erreur est totalement hors de votre méthode de publication.

Deuxièmement, il y a 2 rappels d'erreur à déclencher, puisqu'il y a 2 messages http, donc si vous éteignez votre Internet avant d'appeler la fonction de registre, il n'aura pas le comportement attendu.

Troisième et dernier, il n'y a pas de méthode pop appelée dans votre code, est-ce le navCtrl.pop() que vous voulez? Si c'est le cas, vous devez l'utiliser dans votre erreur. Je ne mettrai pas à jour le code en utilisant la méthode pop de navController car je ne sais pas si c'est ce que vous voulez.

Essayez ceci:

register(){ 
    this.loc_address=localStorage.getItem('user_location'); 
    this.farmer_photo=localStorage.getItem('farmer_photo'); 
    let loader = this.LoadingController.create({ 
     content: 'Please Wait' 
    }); 
    loader.present().then(()=>{ 

     this.http.post("http://loclahost/app/farmer.php", { 
      'farmer_passcode':this.farmer_passcode, 
      'farmer_photo':this.farmer_photo}).map(res => res.json()).subscribe(data => { 
       console.log(JSON.stringify(data[0].ID)); 
       this.get_farmer_id=data[0].ID; 

       this.http.post("http://localhost/app/add.php", { 
        'farm_name': this.farm_name, 
        'farm_address':this.loc_address}).map(res => res.json()).subscribe(data => { 
         console.log(JSON.stringify(data)); 
         loader.dismiss(); 
         let toast = this.toastcontroller.create({ 
          message:'Farmer registration was successful', 
          duration:3000, 
          position:'bottom' 
         }); 
         toast.present(); 

        },error=>{ // <= HERE, the error callback must be inside the executed method 
         loader.dismiss(); 
         let alert = this.alertCtrl.create({ 
          title: 'Error!', 
          subTitle: 'Please check your Internet Connectivity', 
          buttons: ['Try Again'] 
         }); 
         alert.present(); 
        }) 
      }, err =>{ // <= HERE, there must be 2 error callbacks 
       loader.dismiss(); 
       let alert = this.alertCtrl.create({ 
        title: 'Error!', 
        subTitle: 'Please check your Internet Connectivity', 
        buttons: ['Try Again'] 
       }); 
       alert.present(); 
      }); 
    }) 
} 

Hope this helps