我有一个页面,客户端有时会长时间不打开而刷新(超过24小时)。该页面上的某些操作需要有效的PHP会话,因此我构建了一组简单的函数来每10分钟运行一次此检查。

2个功能:


checkLogin()
refreshTimer()


我们调用checkLogin()启动,checkLogin()调用refreshTimer()。计时器完成后,应调用checkLogin(),后者应调用refreshTimer()并重新开始该过程。

第一次直接调用checkLogin()时,效果很好。但是,当refreshTimer()尝试调用checkLogin()时,出现checkLogin()的“函数未定义”错误。

从我的研究看来,我应该能够调用checkLogin()而不将其传递给refreshTimer()。

我确定我可能会遗漏一些明显的东西。谢谢你的帮助!

function checkLogin()
{
    $.ajax({
        url: "/mysite.com/dev/includes/check_login_helper.php",
        success: function(logged_in)
        {
            if(logged_in == "false")
            {
                // they are logged out - redirect them to login page
                alert("logged out");
            }
        }
    });
    refreshTimer();
}


function refreshTimer()
{
    var t = setTimeout("checkLogin()",15000); // do each 10 min currently shorter for test
}

//start the process up
checkLogin();


固定并使用checkInterval

function checkLogin()
{
    $.ajax({
        url: "/mysite.com/dev/includes/check_login_helper.php",
        success: function(logged_in)
        {
            if(logged_in == "false")
            {
                // they are logged out - redirect them to login page
                alert("logged out");
            }
        }
    });
}


  setInterval(checkLogin(),15000); // do each 10 min currently shorter for test

最佳答案

不要将字符串传递给setTimeoutit'seval in disguise。在这种情况下,也没有理由捕获setTimeout返回的值。

function refreshTimer()
{
    setTimeout(checkLogin, 15000);
}

关于javascript - 尝试执行两个函数递归时未定义一个函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7085099/

10-10 04:18