使用JSON自动刷新内容

时间:2014-02-27 18:05:57

标签: javascript jquery json

我有一个小脚本加载到我使用jQuery从last.fm收听的最后一首歌中,如下所示:

$.getJSON('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=paul_r_schaefer&api_key=0f680404e39c821cac34008cc4d803db&format=json', function(data) {
var song = $(".song"), artistVal = data.recenttracks.track[0].artist["#text"], trackVal = data.recenttracks.track[0].name;
song.append(artistVal + " \u2014 " + trackVal); });

有什么方法可以让它删除已附加到<span class="song"></span>的内容并再次加载?对于我的生活,我无法找到一种不会复制这首歌的方式。

编辑:但是,它首次加载时有延迟。有没有办法可以让它运行一次,然后每3秒刷新一次?

function listens() {
    $.getJSON('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=paul_r_schaefer&api_key=0f680404e39c821cac34008cc4d803db&format=json', function(data) {
        var song = $(".song"), artistVal = data.recenttracks.track[0].artist["#text"], trackVal = data.recenttracks.track[0].name;
        song.html(artistVal + " \u2014 " + trackVal);
    });
}
setInterval(listens, 3000);

编辑2:这摆脱了滞后,只是有一种方法可以减少它吗?

listens();
function listens() {
    $.getJSON('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=paul_r_schaefer&api_key=0f680404e39c821cac34008cc4d803db&format=json', function(data) {
        var song = $(".song"), artistVal = data.recenttracks.track[0].artist["#text"], trackVal = data.recenttracks.track[0].name;
        song.html(artistVal + " \u2014 " + trackVal);
    });
}
setInterval(listens, 3000);

2 个答案:

答案 0 :(得分:2)

你的问题是jQuery的.append()好,追加。它附加或添加到元素中的现有HTML中。你想完全替换元素的HTML,所以你的方法应该是这样的:

$.getJSON('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=paul_r_schaefer&api_key=0f680404e39c821cac34008cc4d803db&format=json', function(data) {
var song = $(".song"), artistVal = data.recenttracks.track[0].artist["#text"], trackVal = data.recenttracks.track[0].name;
song.html(artistVal + " \u2014 " + trackVal); });

结帐$.html(htmlString)

  

来自jQuery API:

     

设置匹配元素集中每个元素的HTML内容。

答案 1 :(得分:0)

这对我来说足够好。

listens();
function listens() {
$.getJSON('http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=paul_r_schaefer&api_key=0f680404e39c821cac34008cc4d803db&format=json', function(data) {
    var song = $(".song"), artistVal = data.recenttracks.track[0].artist["#text"], trackVal = data.recenttracks.track[0].name;
    song.html(artistVal + " \u2014 " + trackVal);
});
}
setInterval(listens, 2000);