我有这个简单的脚本,一直在戏弄我:
var latest;
function populate(){
$.get('lib/log.php?action=update&latest='+latest, function(data) {
if(data.id!=latest){
latest = data.id;
$(data.news).hide().prependTo('#tabul').slideDown("slow");
}
},"json")
setInterval(populate,5000);
};
populate();
- 每次请求触发它都会检索一行html,但它会不断将它添加到上一个响应中,因此它会分为1行,2行,4行,8,16 ..等等...浏览器(和带宽) )发疯了......
为什么?我错过了什么,我怎么才能让它只在前面添加一行。
提前致谢
安德烈亚斯
答案 0 :(得分:0)
您应该使用setTimeout
代替setInterval
。
答案 1 :(得分:0)
即使在这5秒后AJAX响应可能无法完成,也会触发SetInterval,我可以建议你在幻灯片播放新内容后使用setTimeout吗?
function populate(){
$.get('lib/log.php?action=update&latest='+latest, function(data) {
if(data.id!=latest){
latest = data.id;
$(data.news).hide().prependTo('#tabul').slideDown("slow");
}
setTimeout(populate,5000);
},"json")
};
populate();
答案 2 :(得分:0)
通过setInterval
功能更改setTimeout
。
检查this stack overflow thread以了解这两者之间的区别。
答案 3 :(得分:0)
也许我误读了一些东西......但是你的Populate函数每次运行时都会添加另一个setInterval。因此,每次执行时,它将再次运行一次。