6

こんにちは、このコードを使用してリモート ホストから json を読み込もうとしています。

<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.getJSON("http://xx.xxx.xxx.xx/rest/user.json",function(result){
  $.each(result, function(i, field){
    $("div").append(field + " ");
      });
    });
  });
});
</script>
</head>
<body>

<button>Get JSON data</button>
<div></div>

</body>
</html>

問題は、ブラウザーに URL を入力すると、そこから json が取得されることです。しかし、上記の jquery メソッドを使用して json を取得できませんでした。

誰かがこの点で助けてくれますか。ありがとう

4

3 に答える 3

6

このページは、JSON をホストするサイトから提供されていないと思います。

クロスドメイン リクエストを作成しようとしていますが、ほとんどの (?) ブラウザで許可されています。ブラウザーの同一生成元ポリシーと呼ばれるものに遭遇しています。ブラウザに組み込まれているセキュリティ対策です。リクエスト元のページと同じオリジンにない場所に XHR リクエストを行うことはできません。

これにはいくつかの方法があります。

  1. サーバー側のプロキシを使用してリクエストを行う
  2. JSONPを使用してリクエストを行います (GBD の回答を参照)
  3. CORSを調べる
于 2012-10-20T16:47:13.537 に答える
4

クロスドメインの問題があるため、JSONP を使用する必要があるため、jquery メソッドを次のように変更します

URL に「callback=?」という文字列が含まれている場合 (またはサーバー側 API で定義されている同様のもの)、要求は代わりに JSONP として扱われます。

$.getJSON("http://xx.xxx.xxx.xx/rest/user.json?jsoncallback=?",function(result){
  $.each(result, function(i, field){
    $("div").append(field + " ");
      });
    });

jQuery マニュアル: http://api.jquery.com/jQuery.getJSON/

于 2012-10-20T16:47:46.363 に答える
0

クロス ドメイン クエリは許可されていません。考えられる回避策については、 「ajax jquery: can't get json/xml from other domain 」を参照してください。もう 1 つの方法は、同じドメインでプロキシを使用して、ローカル クエリをリモート ホストにプロキシすることです。

于 2012-10-20T16:47:03.117 に答える