2017-11-26 14 views
0

私はそれで私のイオンアプリでHTMLを取り込み、その後、イオン性フレームワークを使用して、私が作成したAPIからJSONを解析しようとしています。キャッチされない(約束に):ステータス応答:URL 0:ヌル

Error: Uncaught (in promise): Response with status: 0 for URL: null 
    at c (http://130.215.45.72:8102/build/polyfills.js:3:19752) 
    at c (http://130.215.45.72:8102/build/polyfills.js:3:19461) 
    at http://130.215.45.72:8102/build/polyfills.js:3:20233 

私のすべて-patients.ts:

import { Component } from '@angular/core'; 

import { NavController } from 'ionic-angular'; 
import { RestService } from '../../providers/rest-service/rest-service'; 

@Component({ 
    selector: 'page-all-patients', 
    templateUrl: 'all-patients.html', 
    providers: [RestService] 
}) 
export class AllPatientsPage { 
    public data: any; 

    constructor(public navCtrl: NavController, public restService: RestService){ 
    this.loadPeople(); 
    } 

    loadPeople(){ 
    this.restService.load() 
    .then(data => { 
     this.data = data; 
    }); 
    } 
} 

残り-services.ts:

import { Http } from '@angular/http'; 
import { Injectable } from '@angular/core'; 
import 'rxjs/add/operator/map'; 

/* 
    Generated class for the RestServiceProvider provider. 

    See https://angular.io/guide/dependency-injection for more info on providers 
    and Angular DI. 
*/ 

@Injectable() 
export class RestService { 

    constructor(public http: Http) { 
    console.log('Hello RestServiceProvider Provider'); 
    } 

    load() { 
    if (this.data) { 
    // already loaded data 
    return Promise.resolve(this.data); 
    } 

    // don't have the data yet 
    return new Promise(resolve => { 
    this.http.get('url') 
     .map(res => res.json()) 
     .subscribe(data => { 
     this.data = data.results; 
     resolve(this.data); 
     }); 
    }); 
} 
} 

私はすべての患者のページに移動すると、私は次のエラーを取得しますエラーが発生しているページに移動しますが、コンソールに何も表示されません。私はこれがAPIや他の何かのデータの解析にエラーがあるかどうかは分かりません。私は手動でapiのページに行き、データが期待どおりに表示されます。

+1

可能性のある重複した[2角度:EXCEPTION:ステータス応答:URL 0:ヌル](https://stackoverflow.com/questions/39520209/angular-2-exception-response-with-status-0-for -url-null) –

+0

^CORSの問題のように聞こえます。 –

+0

@ObsidianAge私のAPIのための私のエンドポイントは、同じサーバー上に構築された、ちょうど異なるポートです。 CORSの問題になる可能性はまだありますか? – Drew

答えて

2

私は黒曜石の年齢はすでにあなたの可能なコアの問題を与えたが、それにもかかわらず、あなたはどんな約束の拒絶反応を扱うべきではないことを推測します。 だから、その場合にはそれに応じて、コードを変更する必要があります。

私のすべて-patients.ts:

... 
loadPeople(){ 
    this.restService.load() 
    .then(data => { 
    this.data = data; 
    }) 
    .catch(e => console.error); // change this line according to your debugging/logging needs 
} 
... 

残り-services.ts:

... 
import 'rxjs/add/operator/toPromise'; 
... 
return this.http.get('url') 
    .map(res => res.json()) 
    .subscribe(data => { 
    this.data = data.results; 
    return this.data 
    }) 
    .toPromise(); 
... 

うまくいけば、これは、実際のエラーを明確にしていますあなたは報告しましたが、エラーについての重要な情報を失うことはないので、何が起こっているかについてより多くの洞察を与えます。

+0

は[ 'Promise'コンストラクタアンチパターン(https://stackoverflow.com/q/23803743/1048572?What-is-the-promise-construction-antipattern-and-how-to-avoid-it)を避け、むしろ使用します'.toPromise()'。 – Bergi

+0

@Bergi理由を説明できますか?私の知る限り約束コンストラクタを避けて見ることができるように(this.restService '後に上位' .then'呼び出しですべての作業をしなければならないにつながる、適切にデータオブジェクトを処理するために、 '負荷()'メソッドを許可しません。 load() ')。 – TheGiantBeast

+0

「メソッドがデータオブジェクトを適切に処理することを許可しない」とはどういう意味ですか? Afaik 'http.get'はObservableを返します。Observableは' new Promise'ラッパーを使わずに約束事として簡単に消費することができます。 – Bergi

関連する問題