2017-04-22 75 views
0
tamGetir(yno){ 
    let yazilan:any; 

    let body={ 
      uyeno:this.uye.uyeno, 
      eposta: this.uye.eposta, 
      sifre: this.uye.sifre, 
      gunlukno: this.defterno, 
      yazino: yno 
      } 
    this.http.post('http://www.gibigo.com/sayfalar/ion_android_gungetir2.php',JSON.stringify(body)) 
      .map(res=>res.json()) 
      .subscribe(data=>{ 

       console.log(data.yazi); 
       yazilan=data.yazi; 
      }); 
    return yazilan; 
} 

「data.yazi」在控制檯中看起來正確,但返回操作不起作用。退貨不確定。我如何正確返回它。離子2,「返回」不起作用

+0

檢查我的更新答案 –

回答

0

http函數返回Observable。這是異步的。當你使用訂閱時,http請求被觸發,並返回一個observable。數據是在收到回覆時收到的。

yazilan=data.yazi;正在發生返回聲明。 您應該使用類變量來簡單地保存訂閱中的數據。

如果你的方法是在一個供應商,地圖返回HTTP調用,並在組件

tamGetir(yno){ 
    let yazilan:any; 

    let body={ 
      uyeno:this.uye.uyeno, 
      eposta: this.uye.eposta, 
      sifre: this.uye.sifre, 
      gunlukno: this.defterno, 
      yazino: yno 
      } 
    return this.http.post('http://www.gibigo.com/sayfalar/ion_android_gungetir2.php',JSON.stringify(body)) 
      .map(res=>res.json()) 

在您的組件訂閱:

yazi:any;//class variable 

callHttpFunction(){ 
    this.provider.tamGetir(yno) 
    .subscribe(data=>{//call the subsribe 
       console.log(data); 
       this.data_variable =data.yazi; 
       }) 
}