2016-06-13 23 views
0

リアクティブエクステンション(rx)のObservable Subscribe演算子でエラーが発生し、その理由が表示されません。私が行ったチュートリアルの同じコードは正常に動作しているようですが、何らかの理由で実際のAPIでエラーが発生しています。エラーが返されていますが、リクエストデータは正常に返されます。

getChannelVideos(channelId: string): Observable<any>{ 
    var url = `${this._baseUrl}/channels/${channelId}/videos`; 

    return this._jsonp.get(url).map(response => response.json()); 
} 

// url https://api.twitch.tv/kraken/channels/khaldor/videos 

私のコンポーネントでは、このサービス機能をngOnInitに呼び出します。ネットワークタブで

ngOnInit(){ 
    this._twitchService.getChannelVideos('khaldor') 
    .subscribe(response => console.log(response)); 
} 

、私はコンソールで

{"_total":2, 
    "_links":{...}, 
    "videos": {...} 
} 

JSONオブジェクトと200応答を取得し、私が返されるJSON応答で最初のセミコロンを参照エラーvideos:1 Uncaught SyntaxError: Unexpected token :を得ます。

サービスで.mapを削除しようとしましたが、コンポーネント内のObservableオブジェクトに.subscribe()を適用すると同じエラーが発生します。

答えて

1

あなたの住所はJSONPに準拠していないと思います。その場合は、JSONP_CALLBACKの値をコールバッククエリパラメータに指定する必要があります。そのような何か:

getChannelVideos(channelId: string): Observable<any>{ 
    var url = `${this._baseUrl}/channels/${channelId}/videos?callback=JSONP_CALLBACK`; 

    return this._jsonp.get(url).map(response => response.json()); 
} 

callbackはサンプルであり、サービスに依存します。

あなたのサービスがCORSをサポートしている場合は、代わりにHttpクラスを利用することができます:

constructor(private http:Http) {} 

getChannelVideos(channelId: string): Observable<any>{ 
    var url = `${this._baseUrl}/channels/${channelId}/videos`; 

    return this.http.get(url).map(response => response.json()); 
} 
+0

をそれがJSONPに準拠しなかった場合、それはデータを返すことでしょうか?私がHttpサービスを使用したとき、CORSを有効にしないでCORS要求を行うときに典型的なエラーが出されました。私はJSONPに切り替えました(彼らは準拠していると言います)。そして、Networkタブの要求からデータを取得します。 – awwester

+0

サービスがJSONPの場合は問題ありません。問題はコールバック名を指定しないため、レスポンスは単純なJSONですが、関数呼び出しではラップされません。それのようなもの: 'callback([{name: 'test'}、...]);'。 JSONPは要求を実行するために追加された動的スクリプト要素に依存するため、レスポンスはこれに従わなければなりません。 –

+0

ここに2つのサンプルがあります:http://stackoverflow.com/questions/36289495/how-to-make-a-simple- jsonp-asynchronous-request-in-angular-2/36289568#36289568およびhttp://stackoverflow.com/questions/35180562/i-need-to-do-a-http-request-to-a-mail-chimp-サブスクリプションリスト経由でコンポーネントポー/ 35181085#35181085。 –

関連する問題