jQuery get / ajax重复请求每次渲染响应加倍

时间:2011-09-14 13:47:39

标签: jquery ajax get response

我有这个简单的脚本,一直在戏弄我:

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 ..等等...浏览器(和带宽) )发疯了......

为什么?我错过了什么,我怎么才能让它只在前面添加一行。

提前致谢

安德烈亚斯

4 个答案:

答案 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。因此,每次执行时,它将再次运行一次。