0

私のJSONに何か問題がありますか?

http://codepen.io/anon/pen/Ieyvl

var url = "http://x.com/json.js";

$.getJSON(url, function(response){
    alert("worked!");
    alert(response);
});

「クロスドメイン」の問題である場合、なぜこれが機能するのですか?

http://codepen.io/anon/pen/BHshC

var url = "http://gdata.youtube.com/feeds/api/playlists/PL3E245DF445E37F50?v=2&alt=jsonc";

$.getJSON(url, function(response){
    alert("worked!");
    alert(response);
});
4

4 に答える 4

3

コンソールを見てください:

XMLHttpRequest はhttp://xml.hosting.subsplash.com/5KQ4CM/json.jsを読み込めません 。Origin http://secure.codepen.ioは Access-Control-Allow-Origin で許可されていません。

同一オリジン ポリシーについてお読みください。

サポートされている場合は、JSONP を使用する必要があります。そして、サーバーがそれをサポートしている場合は、CORSを調べます


[編集]

確認はしませんでしたが、Google の例が機能する場合は、おそらく Google がそのリソースに対して CORS を有効にしたためです。つまり、それをサポートするブラウザーは、Ajax 呼び出しでリソースを要求できます。すべてのブラウザがそのタイプのハンドシェイクリクエストをサポートしているわけではありません。[古い IE を見て]

于 2013-01-23T15:51:14.600 に答える
0

http://api.jquery.com/jQuery.getJSON/でjQuery.getJSON()ドキュメントを読むと、
次のように表示されます。ブラウザのセキュリティ制限により、ほとんどの「Ajax」リクエストには同じオリジンポリシーが適用されます。リクエストは、別のドメイン、サブドメイン、またはプロトコルからデータを正常に取得できません。また、jQuery 1.4以降、JSONファイルに構文エラーが含まれている場合、リクエストは通常​​、サイレントに失敗します。

于 2013-01-23T16:03:51.037 に答える
0

ホスティング サーバーが応答タイプを正しく処理していません。さらに、これを JSONP として行うか、getJSON を使用する場合は ?callback=? を追加する必要があります。最後にあなたのURLに。

var url = "http://xml.hosting.subsplash.com/5KQ4CM/json.js?callback=?";

$.getJSON(url, function(response){
    alert("worked!");
    alert(response);
});
于 2013-01-23T16:20:26.570 に答える
0

これは有効な JSON です。おそらく、jquery は application/json の代わりに application/javascript という MIME タイプを返すため、問題を抱えています。

于 2013-01-23T15:51:00.763 に答える