2017-01-06 4 views
0

後、私は失敗した後http.get要求のステータスを返すようにしようとしていますが、以下のコードは動作しませんhttp..getステータスを返す:Angular2:失敗

fileExists(url){ 
     var status=""; 
     this.http.get(url) 
        .map(res => res.json()) 
        .subscribe(
         data => console.log(data), 
         err =>{ 
           console.log(err.status) 
           status=err.status}); 
     console.log("Status is: "+status); 
     return status; 
    } 

私はstatus=err.statusのステータスを設定期待変数には、それはあなたが、その後res.statusを行うことができるようにresと仕事をしなければならない

+0

'はconsole.log( "状態: "+状態);' http.get'が達成呼び出す前に、それが評価されますので、 ''"" 'と' status'を印刷しますuは理にかなって、私は私はあなたが( 'res.jsonを実行する必要があります@KamyarParastesh fialure部分 –

答えて

1

を動作しません。

とすぐにあなたが得るようres.json()あなたが状況だけでなく、他の情報を失います。 res.json()は、内部のオブジェクトバージョンを返します。res._body

Angular2 responsesを参照してください。

+0

自分の購読の成功の中に自分自身。 jsonが無効であれば失敗し、 '!== 200'を意味するわけではありません。 –

+0

のuは右ビット)'にすることができます言うこと –

+0

でres.jsonを得ることができる方法がわからないコード – zurfyx

0

次のコードでは、変数の内部http requestの状態を保存します。 statusの変数は、要求の送信後に画面に表示されます。

export class App { 

    private status: string; 

    constructor(private http: Http) { 
    this.http.get(`someNotExistingJSON.json`) 
     .subscribe(res => { 
       console.log("success") 
      }, 
      err => { 
       console.log(err.status); 
       this.status = err.status; 
      } 
     ) 
    }; 

    getStatus(){ 
    console.log(this.status); 
    } 
} 

Plunker