リアクティブエクステンション(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()
を適用すると同じエラーが発生します。
をそれがJSONPに準拠しなかった場合、それはデータを返すことでしょうか?私がHttpサービスを使用したとき、CORSを有効にしないでCORS要求を行うときに典型的なエラーが出されました。私はJSONPに切り替えました(彼らは準拠していると言います)。そして、Networkタブの要求からデータを取得します。 – awwester
サービスがJSONPの場合は問題ありません。問題はコールバック名を指定しないため、レスポンスは単純なJSONですが、関数呼び出しではラップされません。それのようなもの: 'callback([{name: 'test'}、...]);'。 JSONPは要求を実行するために追加された動的スクリプト要素に依存するため、レスポンスはこれに従わなければなりません。 –
ここに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。 –