JavaScript/jQuery 每 5 分钟调用一次函数,持续 8 小时

标签 javascript jquery

我需要在 8 小时内每 5 分钟调用一次函数。问题是它必须是同一天。例如,如果用户在 3/29 晚上 11:59 登录系统,而现在是 3/30 凌晨 12:01,则​​不应再调用该函数。

我知道如何每 5 分钟调用一次,并对 jQuery ajax 调用进行编码;那部分很好。我的问题是计算日期。

这是代码:

var startDay;

function keepAlive(currDay) {
    var today = new Date().getDate();
    if (currDay == today) {
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: "{ alive: 'true' }",
            url: "../ses/imsi_ses_edit.aspx/KeepSessionAlive",
            dataType: "json",
            success: function(data) {
            },
            error: function(response) {
                alert(response.responseText);
            }
        });
    }
}
window.onload = function() {
    startDay = new Date().getDate();
    keepAlive(startDay); //Make sure the function fires as soon as the page is loaded

    setTimeout(keepAlive, 300000); //Then set it to run again after five minutes
}

最佳答案

var initDate = new Date(); // Or get the user login date from an HTML element (i.e. hidden input)
var interval;

function keepAlive() {
    // Do stuff (ajax call)
}

window.onload = function() {
    keepAlive();

    interval = window.setInterval(function() {
        var now = new Date();
        if(now.getTime() - initDate.getTime() < 8*60*60*1000 && now.getDate() == initDate.getDate()) {
            keepAlive();
        }
        else {
            // Stop the interval
            window.clearInterval(interval);
        }
    }, 5*60*1000);
}

关于JavaScript/jQuery 每 5 分钟调用一次函数,持续 8 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9929023/

相关文章:

javascript - Rails3 使用 text/html 内容类型而不是 text/javascript 呈现 js.erb 模板

javascript - 如何在angular js中验证没有表单标签的输入?

javascript - jQuery DataTables - 自定义列可见性

javascript - 使用空值集触发 Bootstrap 工具提示

javascript - 在angular bootstrap ui中点击关闭下拉菜单

javascript - jquery every - 来自另一个脚本的函数

javascript - 使用函数触发 chrome.browserAction.onClicked

jquery - 无法从json列表获取数据

jQuery Draggable Helper 停止自动删除

javascript - 检查复选框状态是否已更改并且同时按下了提交按钮