0

重複の可能性:
localhostまたはfile://からJSONサービスにアクセスする

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script>
$.getJSON('http://game4u.comuf.com/songs.json', function(data) { 

  var output = data.music[0].url; 
  document.getElementById("placeholder").innerHTML = output;

});
</script>

しかし、これを実行すると、JSONファイル(music [0] .url)がブラウザーに表示されません。Webサイトと同じサーバーではなく、ローカルでHTMLを実行しています。

4

1 に答える 1

2

Webサイトと同じサーバーではなく、ローカルでHTMLを実行しています。

それが問題になります。getJSONは「ajax」呼び出しであり、それらは同一生成元ポリシーによって制限されています。ローカルファイルシステムはと同じオリジンではありませんhttp://game4u.comuf.com/songs.json(ただし、一部のブラウザはローカルファイルシステムを任意のオリジンと一致するものとして扱いますが、ほとんどはそうではありません)。

でコンテンツを制御する場合は、JSONの代わりにJSON-Phttp://game4u.comuf.com/songs.jsonを使用できます。JSON-PはSOPを回避します。もう1つのオプションは、クロスオリジンリソースシェアリングです。これは、サーバーエンドが何かを行う必要があり(この場合、オリジン「null」へのアクセスを許可する)、それをサポートするブラウザーを使用する必要があります(最新のものはすべて、IE9のみ)XHRオブジェクトの代わりにXDRを使用する必要があるという事実を回避する場合は、これを実行します。これは、jQueryが実行するプラグインはありますが、実行しないものです)。


これとは別に、Musaが指摘したように、JSONは無効です。URLのバックスラッシュを修正し(バックスラッシュ[ /]ではなくスラッシュ[]にする必要があります\)、リストの最後にある末尾の末尾を削除すると,有効になりますが、これはJSONでは無効です。

于 2013-01-04T06:45:24.817 に答える