【问题标题】:Pull data our of JSON with Jquery使用 Jquery 从 JSON 中提取数据
【发布时间】:2012-01-30 06:42:45
【问题描述】:

我有一个 json 文件存储在静态 url 中,我想抓取它并拉取我们的数据对象。

<div id="content"></div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function(){
        $.getJSON('https://s3.amazonaws.com/wallyball_production/comedy.json', function(data){
            $("#content").html(data);
        });

    });
  </script>

这没有输出任何东西?我很快就完成了,不知道为什么我什么也没看到?

【问题讨论】:

  • $.getJSON 将返回对象而不是字符串

标签: jquery json


【解决方案1】:

跨域 AJAX 调用需要jsonp(或编写代理服务器端脚本)。只要远程服务器设置正确(我认为亚马逊会),使用 jQuery 就很容易:

$.ajax({
    url      : 'https://s3.amazonaws.com/wallyball_production/comedy.json',
    dataType : 'jsonp',
    success  : function (data) {
        //$('#content').html(data);
        for (var i = 0, len = data.length; i < len; i++) {
            //`data[i].something` will access the `something` property an index of the JSON returned
        }
    }
});

请注意,您将获得 JSON 作为响应,因此您需要在将其附加到 DOM 之前对其进行迭代。

这里是 jQuery 的 $.ajax() 的文档:http://api.jquery.com/jquery.ajax

【讨论】:

  • 我一直和你在一起,直到我看到你的success 回调。响应不是 JSON 对象,不是 HTML 吗?
  • @AymanSafadi 是的,这就是为什么我注意到需要更改 Xtian 的代码以遍历 JSON 结果。
  • 嗯,我想我会得到一些东西:console.log('data[i].name');在 for 循环中但什么都没有????
  • @Xtian 在success 回调的第一行以console.log(data) 开头。检查 JSON 的结构,然后从那里继续。我的例子只是一个猜测,因为我不知道 JSON 的结构。
【解决方案2】:

由于same-origin policy,您的网络应用程序永远无法与来自其他域的内容进行交互。

您需要通过您的网络服务器代理请求(然后联系亚马逊并返回结果),或使用JSONP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多