如何使用getJSON循环遍历last.fm结果

时间:2015-07-20 07:36:08

标签: javascript jquery arrays each last.fm

我是JS的新手,并尝试在过去7天内获取我的last.fm toptracks,其API的限制为3:

http://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=thisisheroic&period=7day&limit=3&api_key=3cbc1a3aa903935d08223263bcc3ba0b&format=json

下面的代码可以使用,但每当我将limit更改为1以上时,它都会失败并且没有控制台错误。知道如何使用.html打印出这3个曲目名称的数组吗?

$.getJSON("http://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=thisisheroic&period=7day&limit=1&api_key=3cbc1a3aa903935d08223263bcc3ba0b&format=json", function(result){
    $.each(result, function(){
        $('#lastfm_toptracks').html(result.toptracks.track.name);
    });
});

3 个答案:

答案 0 :(得分:2)

首先,您需要修改代码以循环返回的result.toptracks.track数组。其次,您需要将html()更改为append(),否则您将在每次迭代时覆盖元素的文本,并且只会看到最终的曲目。试试这个:

$.getJSON("http://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=thisisheroic&period=7day&limit=3&api_key=3cbc1a3aa903935d08223263bcc3ba0b&format=json", function(result){
    $.each(result.toptracks.track, function(i, track){
        $('#lastfm_toptracks').append('<p>' + track.name + '</p>');
    });
});

Example fiddle

另请注意,documentation表示limit的默认设置为每个请求50个。

答案 1 :(得分:0)

代码下方:

$.getJSON("http://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=thisisheroic&period=7day&limit=3&api_key=3cbc1a3aa903935d08223263bcc3ba0b&format=json", function(result){        
    $.each(result.toptracks.track, function(key, val){        
        console.log(val.name);
        $('#lastfm_toptracks').append('<div>'+ val.name + '</div>');
    });
});

小提琴:

http://jsfiddle.net/k6g6v0rc/1/

答案 2 :(得分:0)

这只是一个语法错误

$.getJSON("http://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=thisisheroic&period=7day&limit=3&api_key=3cbc1a3aa903935d08223263bcc3ba0b&format=json", function(results){
console.log(results);
$.each(results.toptracks.track, function(index,value){
    //$('#lastfm_toptracks').html(result.toptracks.track.name);
    alert(value.name);
});

});

应该有效。

该链接指向工作演示。

http://jsfiddle.net/nnyf0n28/7/

请详细了解此链接:: http://api.jquery.com/jquery.each/