Any suggestion for make this work?


Hello ,
i was trying to read a value by ionic storage and post it to data base by hhtp post but it seems thatit’s posted empty to the database …

any thing i am missing?

import { Component } from '@angular/core';
import { NavController , ToastController, App, ActionSheetController} from 'ionic-angular';
import { ReclamationPage} from '../reclamation/reclamation';
import { Http, Headers, RequestOptions }  from '@angular/http';
import { PostProvider } from '../../providers/post-provider';
import { GetProvider } from '../../providers/get/get';
import { Storage } from '@ionic/storage';
import 'rxjs/add/operator/map';
import { Observable } from 'rxjs/Observable';

  selector: 'page-suivre-reclamation',
  templateUrl: 'suivre-reclamation.html',

export class SuivreReclamationPage {
  items: any;
  public dt: any;

  cin: string ="";
  rec_id: string ="";
  type_rec: string ="";
  description: string ="";
  adresse: string="";
  laptitude: any;
  longitude: any;
  etat_rec: string ="";
  datetime: string=""
  gouvernorat: string ="";
  commune: string="";
  cin_admin: string=""
  postal: string="";
  fichiers: string="";

  constructor(public navCtrl: NavController, private postPvdr: PostProvider, public http: Http,
    public storage: Storage , public toastCtrl: ToastController, appCtrl: App,
    public actionSheetCtrl: ActionSheetController ){'session_storage').then((result) => {
      this.dt = result;
      this.cin = this.dt[0].cin;
      console.log(this.cin + 'here');
    console.log(this.cin + ' here 2');


    //evenement d'entrée

      console.log('ionViewWillEnter SettingsPage');

    load(cin_: string)
      let body = {
        cin:  cin_ ,
        aksi: 'suivre_reclamation'

      this.postPvdr.postData(body) .subscribe(data => {
           this.items= data.items;



the result :


Is the value you want to post via http this.cin ? And, do you think it is empty because you just see here 2 in the output?

If so, the problem, I think, is that your call to returns a Promise, which you then handle with then(). So, the function passed to then() happens when the promise is resolved – not immediately. However, your code goes on and prints this.cin is not resolved yet.

The solution, I think, is to put your call to this.load(this.cin) into the then() function:'session_storage').then((result) => {
      this.dt = result;
      this.cin = this.dt[0].cin;
      console.log(this.cin + 'here');

That way the call to load will only be done when the result has been resolved.

Hope this helps.

1 Like

I suggest u to make any HTTP call inside/after ionViewDidEnter(){ … }.

1 Like