尝试显示带有结果的封面。 img src标记中的某些内容导致该应用无法加载。如果我只是将img指向data.tracks [i] .album.name(显然不是真正的url,但足以测试它是否正常工作),它会粘贴得很好,但是当我更改它以将url粘贴到其中时位置,它会使整个应用停止运行。

$('#findTracks').click(function (e) {
                e.preventDefault(); // override/don't submit form
                $('#recommendations').empty();
                var artist = $('#artist').val();
                var userid = "";
                var playlistid = "";

                $.ajax({
                    url: 'http://ws.spotify.com/search/1/track.json?q=' + artist,
                    type: 'GET',
                    dataType: 'json',
                    success: function(data) {
                        if (data.tracks.length > 0) {
                            var tracksLength = data.tracks.length, html = '';
                            for (var i=0; i<tracksLength; i++) {
                                var href = '';
                                if (data.tracks[i].album.availability.territories.indexOf(' GB ') !== -1) { // data.tracks[i].href
                                    href = data.tracks[i].href;
                                    href = 'makeReq(\''+data.tracks[i].name + ' by '+data.tracks[i].artists[0].name+'\')';
                                    html += '<li><a href="#" onclick="' + href + '">' +data.tracks[i].name + ' by '+data.tracks[i].artists[0].name+ ' <img src="' +data.tracks[i].album.images[0].url+ '" /></a>';html += '</li>';

                                    html += '</li>';
                                }
                            }
                            $('#third').css('display', 'block');
                            $('#recommendations').append(html);
                        } else {
                            $('#recommendations').append('<li>No matches returned.</li>');
                            $('#third').css('display', 'none');
                        }
                    },
                    error: function(err) {
                        alert("The Spotify API failed to return a response.");
                    }
                });
            });


这是我第一次用javascript编码,所以请放轻松!大声笑

编辑:

这似乎运行良好!但是,当我单击它们时,许多歌曲都无济于事

例如,键入“ Do n't Stop”,只有“黑眼豆豆-Do n't Stop The Party”在前十名中起作用...有人知道为什么吗?

还有,有人知道为什么“如果(data.tracks [i] .album.availability.territories.indexOf('GB')!== -1)”在那里吗?如果我将其取出,一切将停止工作...我不在G.B.

最佳答案

如果您在控制台中查看错误信息

Uncaught TypeError: Cannot read property '0' of undefined


查看查询返回的数据,我们注意到data.tracks [i] .album返回

{
    "released": "2006",
    "href": "spotify:album:2knAf4wg8Gff8q1bXiXCTz",
    "name": "The Dutchess",
    "availability": {
        "territories": "MX"
    }
}


没有属性images,因此当您致电时

data.tracks[i].album.images[0]


您得到未定义的错误,导致脚本停止执行。
我不熟悉Spootify api,但快速浏览一下api,发现get-album的端点。这是我想出的获得专辑封面的方法



$.get("http://ws.spotify.com/search/1/track.json?q=Fergie",function(data){
   var albumId = data.tracks[97].album.href.split(":")[2];
   $.get("https://api.spotify.com/v1/albums/" + albumId,function(albumResponse){
       var firstImage = albumResponse.images[0];
       $('body').append($('<img/>',{
          src : firstImage.url,
          width : firstImage.width,
          height : firstImage.height
       }));
   })
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body></body>





因为我不确定这是否是最佳解决方案,所以您应该对如何获得专辑封面进行更多研究。

您提到的search端点与您使用的端点不同。

   One your using
   url: 'http://ws.spotify.com/search/1/track.json?q=' + artist,
   One you linked to
   url: 'https://api.spotify.com/v1/search?q=' + artist + '&type=track,artist&market=GB',


端点变更为您提供解决方案


$('#findTracks').click(function(e) {
  e.preventDefault(); // override/don't submit form
  $('#recommendations').empty();
  var artist = $('#artist').val();
  var userid = "";
  var playlistid = "";

  $.ajax({
    //url: 'http://ws.spotify.com/search/1/track.json?q=' + artist,
    url: 'https://api.spotify.com/v1/search?q=' + artist + '&type=track,artist&market=GB',
    type: 'GET',
    dataType: 'json',
    success: function(data) {
      if (data.tracks.items.length > 0) {
        data.tracks = data.tracks.items
        data.artists = data.artists.items
        var tracksLength = data.tracks.length,
          html = '';
        for (var i = 0; i < tracksLength; i++) {
          var href = '';
          href = data.tracks[i].href;
          href = 'makeReq(\'' + data.tracks[i].name + ' by ' + data.tracks[i].artists[0].name + '\')';
          html += '<li><a href="#" onclick="' + href + '">' + data.tracks[i].name + ' by ' + data.tracks[i].artists[0].name + ' <img src="' + data.tracks[i].album.images[0].url + '" /></a>';
          html += '</li>';
          html += '</li>';

        }
        $('#third').css('display', 'block');
        $('#recommendations').append(html);
      } else {
        $('#recommendations').append('<li>No matches returned.</li>');
        $('#third').css('display', 'none');
      }
    },
    error: function(err) {
      alert("The Spotify API failed to return a response.");
    }
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Artist:
<input type="text" id="artist" />
<button id="findTracks">Find Tracks</button>
<div id="recommendations"></div>

关于javascript - 从JSON显示图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28438883/

10-14 02:09