1

外部のjsonURLがあります。

http://kun6858.iptime.org:8080/apps/list/?app_mb_no=9

そして、jquery $ .getJSON(..)を使用してこのjsonにアクセスします

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script>
$.getJSON(
    "http://kun6858.iptime.org:8080/apps/list/?jsoncallback=?",
    {
        app_mb_no : 9
    },
    function(data) {
        console.log(data);
    }
);
</script>
</body>
</html>

しかし、上記のソースを使用してJSONにアクセスすることはできません。

外部サーバーのjsonにアクセスする方法がわかりません。ソースに問題がありますか?またはJSON?


参考までに、これはスクリーンショットです。

ここに画像の説明を入力してください

4

3 に答える 3

0

クロスドメインアクセスにはJSONPを使用する必要があります。したがって、AJAX呼び出しを変更する必要があります。

このシナリオの良い説明はここにあります:

http://www.jquery4u.com/json/jsonp-examples/

于 2012-06-05T13:49:03.307 に答える
0

3つのポイント:

  1. ajax呼び出しに価値は必要ありませんapp_mb_noか?例えばapp_mb_no : 9
  2. .ajax同等 のものを使用できます。$.ajax({ url: url, dataType: 'json', data: data, success: callback });
  3. Webサーバーでコードを実行しましたか?これを行う必要があります。
于 2012-06-05T13:56:07.310 に答える
0

それがどのように機能するかは正確にはわかりませんが、これで問題は解決しました。

これをServletResponseに追加する

    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setContentType("Content-Type:application/json;charset=UTF-8");

そしてHTML

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script>
var url = "http://localhost:8080/apps/list/?app_mb_no=9";


if ($.browser.msie && window.XDomainRequest) {
    // Use Microsoft XDR
    var xdr = new XDomainRequest();
    xdr.open("get", url);
    xdr.onload = function () {
    var JSON = $.parseJSON(xdr.responseText);
    if (JSON == null || typeof (JSON) == 'undefined')
    {
        JSON = $.parseJSON(data.firstChild.textContent);
    }
    processData(JSON);
    };
    xdr.send();
} else {
          $.ajax({
          type: 'GET',
          url: url,
          processData: true,
          data: {},
          dataType: "json",
          success: function (data) { processData(data); }
          });
}

function processData(data) {
    console.log(data);  
}
</script>
</body>
</html>

誰かがより良い方法を知っているなら私に教えてください!ありがとう

于 2012-06-05T14:53:18.563 に答える