2017-04-03 54 views
0

我想让艺术家的名字出现在我创建的叠加层上,我如何正确定位代码才能访问它? as,data.artist [0] .name不起作用?如何正确定位Spotify API中的数据?

// Get the Album Information from the API to show on the overlay 

    function albumInformation(data){ 

    var infoHTML = '<ul id="data">'; 

    $.each(data.tracks, function(i, data){ 
     infoHTML += '<li class="albumInfo">'; 
     infoHTML += '<p' + data.artist[0].name + '"></p>'; 
     infoHTML += '</li>'; 
    }); // closes each 

    infoHTML += '</ul>'; 

    $.getJSON(spotifyURL, albumData, albumInformation); 

     $(lightboxOverlay).append(infoHTML); 

Spotify的API信息

{ 
    "tracks" : [ { 
    "album" : { 
     "album_type" : "album", 
     "artists" : [ { 
     "external_urls" : { 
      "spotify" :  
     "https://open.spotify.com/artist/3WrFJ7ztbogyGnTHbHJFl2" 
     }, 
     "href" : "https://api.spotify.com/v1/artists/3WrFJ7ztbogyGnTHbHJFl2", 
     "id" : "3WrFJ7ztbogyGnTHbHJFl2", 
     "name" : "The Beatles", 
     "type" : "artist", 
     "uri" : "spotify:artist:3WrFJ7ztbogyGnTHbHJFl2" 
     } ], 
     "available_markets" : [ "CA", "MX", "US" ], 
     "external_urls" : { 
     "spotify" : "https://open.spotify.com/album/0ETFjACtuP2ADo6LFhL6HN" 
     }, 
     "href" : "https://api.spotify.com/v1/albums/0ETFjACtuP2ADo6LFhL6HN", 
     "id" : "0ETFjACtuP2ADo6LFhL6HN", 

回答

0

你缺少的album级别的数据。为了从你需要以下有效载荷访问艺术家的名字:所以

data.tracks[0].album.artists[0].name; 

在你$.each代码的情况下这将是:

$.each(data.tracks, function(i, track){ 
    infoHTML += '<li class="albumInfo">'; 
    infoHTML += '<p' + track.album.artists[0].name + '"></p>'; 
    infoHTML += '</li>'; 
}); 
+0

谢谢您的帮助。不幸的是我无法获得数据显示。控制台显示:Uncaught TypeError:无法读取未定义的属性'0' –

+0

'data.tracks [0] .album'的结果是什么? – hackerrdave

+0

https://jsfiddle.net/90s15v35/1/我对这个没有太大的好运。我可以通过html + =''来获取专辑图片; –