0

我正在尝试获取 json 提要并显示艺术家的姓名。在 element.artist 的行上,它显示 [object Object],[object Object],[object Object] 。我对此很陌生。我将如何显示这些对象的内容?

<script type="text/javascript">
    $(document).ready(function() {
    $.ajax({ 
        type: 'GET', 
        url: 'http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist=richie%20hawtin&api_key=53c21030b0e4c4ff051083aacdc6dc54&format=json', 
        data: { get_param: 'value' }, 
        dataType: 'json',
        success: function (data) { 
            $.each(data, function(index, element) {
                $('body').append($('<div>', {
                    text: element.artist
                }));
            });
        }
    });
    });
</script>
4

3 回答 3

2

那是因为element.artist是一个对象。可能一个艺术家会有一个像element.artist.name. 在浏览器开发工具中放置一个断点并检查对象以查看可用属性。

更新

我刚刚测试了你的电话。将您的成功回调更改为:

success: function(data) {
    $('body').append($('<div>', {
        text: data.similarartists.artist.map(function(elem) {
            return elem.name;
        }).join(", ")
    }));
}

在这里,有一个工作小提琴:http: //jsfiddle.net/adrianonantua/tU2JA/

于 2012-11-08T15:24:24.783 回答
1

在这一点上,您可以做两件事来帮助在紧要关头进行调试。

  1. 打开你的 JS / 开发者控制台(通常是 F12。如果使用 FF,获取 FireBug)。在文本上设置断点:element.artist 行。然后重新运行页面,当断点被命中时,查看“watch”或“variable”(取决于您使用的浏览器)窗口中的元素标记。这将让您在断点被击中时看到完整的层次结构。
  2. 在您的 $('body') 行添加“window.element = element;”之前更“hackish” 然后,仍然在您的开发者控制台中,您可以直接在控制台中输入 JS,输入“元素”并回车。这将为您提供单击/展开对象并查看其详细信息的链接。
  3. RTFM :) 可能有一个文档解释了数据的布局。在这种情况下,您甚至可以让它变得更简单:只需在浏览器中加载http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist=richie%20hawtin&api_key=53c21030b0e4c4ff051083aacdc6dc54&format=json,它就会显示完整的JSON 文档层次结构。在这种情况下,艺术家是艺术家的数组。所以如果你想输出第一个的名字:element.artist[0].name。在你的循环中,正如其他人所建议的那样,它是 element.artist.name
于 2012-11-08T15:33:35.347 回答
1

您可以使用

JSON.stringify(value [, replacer] [, space])

将您的数据对象转换为字符串。

http://msdn.microsoft.com/en-us/library/cc836459(v=VS.94).aspx

于 2012-11-08T15:25:22.973 回答