2016-11-01 16 views
2

私はこの2つの方法でhttp.get()呼び出しを試みました。イオン2 http.get()問題

まず:

getResults(){ 
    return this.http.get('http://localhost/api.php') 
    .toPromise() 
    .then(data => data.json()); 
} 

エラーが表示:

3  122412 error EXCEPTION: Uncaught (in promise): Response with status:0 for URL: null 
4  122413 error ORIGINAL STACKTRACE: 
5  122413 error Error: Uncaught (in promise): Response with status: 0 for URL: null 
.......... 

第二:

示され
getResults(){ 
    return new Promise((resolve, reject) => { 
     this.http.get('http://localhost/api.php') 
     .map(res => res.json()) 
     .subscribe(data => { 
      resolve(data); 
     }, (err) => { 
      reject(err); 
     }); 
    }); 
} 

エラー:

2  925052 error EXCEPTION: Uncaught (in promise): Response with status:0 for URL: null 
3  925052 error ORIGINAL STACKTRACE: 
4  925053 error Error: Uncaught (in promise): Response with status: 0 for URL: null 
....... 

どの方法を使用すればよいのでしょうか?ステータス

答えて

3

応答:URL 0:ヌル

CORSの問題に関連しているようだ... CORSがあなたのバックエンドのコードで有効になっていることを確認してください。

どちらの方法を使用しますか?

http.get()ので、それを使用する1つの方法は、

getResults(){ 
    this.http.get('http://localhost/api.php') 
      .map(res => res.json()); 
} 

だろうし、そのメソッドを呼び出すときに、あなたはこのようにそれを行う必要があり、観察可能を返します。

this.yourService.getResults().subscribe((data) => { console.log(data); }); 

場合あなたは約束を返す必要があり、それでこのようにすることができます:

getResults(){ 
    this.http.get('http://localhost/api.php') 
      .map(res => res.json()) 
      .toPromise(); 
} 

このように使用してください。

this.yourService.getResults().then((data) => { console.log(data); }); 
0

これはCORSの問題です。通常、APIへのアクセスを許可されているすべてのドメインをホワイトリストに登録する必要があります。しかし、あなたはIonic Appを書いているので、あなたのアプリをビルドしてあなたのデバイスで実行すると、これは問題にはなりません。それで、CORSを無効にできるブラウザプラグインをインストールすることをお勧めします。

2つのコードスニペットはどちらも同じことを行います。あなたは、イオンのブラウザでテストし、CORSの問題をヒットしている場合

this.service.getResults().then(data => { 
    // Do something with data 
}); 
1

を:あなたは観測を使用しない場合、私はおそらく最初のオプションとなるだろう:

getResults() { 
    return this.http.get('http://localhost/api.php') 
        .toPromise(); 
} 

そして、そのための解決策があります ionic.configにそのようなものを置いてください。ionic serveを実行すると、CORSなしでAPIがプロキシされます。ここ

{ 
    // ... 
    "proxies": [{ 
    "path": "/api", 
    "proxyUrl": "http://xxxxxxxxx" 
    }] 
} 

さらに詳しい情報:http://blog.ionic.io/handling-cors-issues-in-ionic/

+0

はい。それは私の問題を解決しました。 1票アップ;) –

関連する問題