2

特定の成人向けWebサイトのJSONAPIにアクセスしようとしていますが、機能させることができません。これがjsfiddleです: http://jsfiddle.net/SSqwd/そしてここにコードがあります:

$.ajax({url: 'http://api.redtube.com/?data=redtube.Videos.searchVideos&search=sex&thumbsize=big&page=1&output=json&callback=?',
    dataType: 'json',
    success: function(data) {
        console.log(data);
    }
});

私は得る

Uncaught SyntaxError:予期しないトークン:

自分でページを参照してjsonlintでjsonを確認しても、完全に有効です。

ここで何が問題になっていますか?

4

1 に答える 1

4

クロスドメインリクエストを指定したため、dataTypeをJSONに設定しただけでも、jQueryはデフォルトでJSONPを使用してそのURLをリクエストしようとします。したがって、実際に発生するのは、次のスクリプトタグがDOMに追加されることです。

<script src="http://api.redtube.com/?data=redtube.Videos.searchVideos&search=sex&thumbsize=big&page=1&output=json&callback=?" type="text/javascript"></script>

(?は実際にはjQueryが生成する関数名に置き換えられます)

次に、ブラウザは返されたデータを実行しようとします。ただし、実際にはJSONPではなく、純粋なJSONであるため、返されるものは無効なjavascriptであるため、構文エラーが発生します。

次を使用するだけで同じエラーを再現できます。

<script src="http://api.redtube.com/?data=redtube.Videos.searchVideos&search=sex&thumbsize=big&page=1&output=json&callback=?" type="text/javascript"></script>

そして、他に何もしません。または、そのURLから応答をコピーして貼り付け、スクリプトタグでラップすると、同じエラーがスローされます。

このエラーを解決する唯一の方法は、JSONPをサポートするAPIを使用するか、同じドメイン上の独自のサーバーを介してデータを要求する一種のプロキシを実装することです。

于 2013-02-15T20:53:59.050 に答える