jquery - AJAX间隔刷新?

标签 jquery ajax intervals

我正在尝试使 AJAX 功能更新大约 30 秒。我已经完成了一个简单的版本,这是代码。

var refInterval = window.setInterval('update()', 30000); // 30 seconds

var update = function() {
    $.ajax({
        type : 'POST',
        url : 'post.php',
        success : function(data){
            $('.voters').html(data);
        },
    });
};

这是有效的,但是,当函数第一次被调用时,我不希望它等待 30 秒,我只想调用该函数,然后等待 30 秒,再次调用,等待 30 秒,再次调用,等等。有什么帮助吗?

最佳答案

考虑使用setTimeout代替 - 它更可靠。 setInterval 计时器可以在窗口没有焦点时堆叠,然后在窗口再次获得焦点时立即运行。使用 setTimeout 还可以确保在第一个 AJAX 请求由于某种原因阻塞时不会出现多个排队的 AJAX 请求。

要立即启动循环,请在函数周围使用 IIFE(“立即调用函数表达式”):

(function update() {
    $.ajax({
        ...                        // pass existing options
    }).then(function() {           // on completion, restart
       setTimeout(update, 30000);  // function refers to itself
    });
})();                              // automatically invoke for first run

附:不要对 setIntervalsetTimeout 使用字符串参数 - 只需直接传递函数引用。

关于jquery - AJAX间隔刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24494805/

相关文章:

matlab - 在 MATLAB 中使用时间序列按天/小时计算值

jQuery 按文本选择 Href

javascript - 加快 UL LI 列表中超过 5000 个对象的 AJAX 搜索速度

jquery - 附加项目时同位素不会重新布局

java - 时间段的数学集?

algorithm - 将双舍入到算术级数的最近成员?

javascript - 如何从远程 URL 获取特定的 HTML 内容?

javascript - 在带有数据的表中正确使用类与 ID

jquery - 使用 jQuery 更改背景图像不起作用

Jquery ajax 调用在 Firefox 中不起作用