在外部服务器中访问JSON

时间:2012-06-05 13:45:53

标签: jquery json

我有外部json网址。

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?


供您参考,这是屏幕截图..

enter image description here

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

三点:

  1. 你的ajax通话中app_mb_no是否需要价值?例如app_mb_no : 9
  2. 您可以使用.ajax等效词:$.ajax({ url: url, dataType: 'json', data: data, success: callback });
  3. 您是否在Web服务器下运行代码?你需要这样做。

答案 2 :(得分: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>

如果有人知道更好的方式请教我!感谢