リモート サーバーから JSON データを呼び出そうとしていますが、サーバーは有効な JSONP 形式のデータを返さず、有効な JSON データのみを返します。(バリデータで確認済み)
getJSON リクエスト ( &callback=? を使用) を行うと、有効な JSON が返されますが、有効な JSONP ではないため、コールバック関数がトリガーされません。
返された JSON データにアクセスする良い方法はありますか?
リモート サーバーから JSON データを呼び出そうとしていますが、サーバーは有効な JSONP 形式のデータを返さず、有効な JSON データのみを返します。(バリデータで確認済み)
getJSON リクエスト ( &callback=? を使用) を行うと、有効な JSON が返されますが、有効な JSONP ではないため、コールバック関数がトリガーされません。
返された JSON データにアクセスする良い方法はありますか?
いいえ、全体がどのように機能するかという理由で、JSONP データでなければなりません。基本的には、<script>
タグを作成して JavaScript ファイルを含めます...そして、その応答は有効な JavaScript でなければならず、オブジェクト リテラル (それ自体) は有効な JavaScript ではありません。 .
別の方法で考えてみてください。リモート サーバーから JSON を取得できる場合、なぜ JSONP が存在するのでしょうか? :)
ええ、それはひどいです。Viddler API (ブラウザー側) で同じ問題が発生しています。JSONデータを送り返していますが、スクリプト化されたJSON-Pインターフェースではありません。
したがって、次の 2 つのオプションがあります。
がんばれ!
まず、JSON を取得するサーバーが JSONP をサポートしていない場合は、プロキシを使用する必要があります。JSONP をサポートしている場合は、以下のサンプルのようにリクエストをフォーマットする必要があります。$.getJSON(...&callback=?) でコールバックを指定しない場合、リクエストは次のようになります。
http://someurl?callback=123489234982
最後にばかげた数字が付いていて、それはあなたの人生を苦痛にします。したがって、コールバックを指定し、次のようにコードをフォーマットする必要があります。
<script>
$.getJSON("your url?callback=callbackName", ....);
function callbackName { do what you want with the json in here }
</script>
それが機能しない場合、サーバーはJSONPをサポートしていません:(これは、使用できるphpプロキシへのリンクです。これは非常に優れており、多くのドキュメントがあります.