1

我有外部 json URL。

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

三点:

  1. app_mb_no在你的 ajax 调用中不需要值?例如app_mb_no : 9
  2. 您可以使用.ajax等价物: $.ajax({ url: url, dataType: 'json', data: data, success: callback });
  3. 您是否在 Web 服务器下运行过代码?你需要这样做。
于 2012-06-05T13:56:07.310 回答
0

您需要使用 JSONP 进行跨域访问。因此,您必须修改您的 AJAX 调用。

这种情况的一个很好的解释是在这里:

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

于 2012-06-05T13:49:03.307 回答
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 回答