尝试执行两个函数递归时,未定义一个函数

One function is not defined when trying to do two function recursion

本文关键字:函数 未定义 一个 两个 执行 递归      更新时间:2023-09-26

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

2功能:

  1. checkLogin((
  2. refreshTimer((

我们调用checkLogin((来启动,checkLogin(调用refreshTimer((。定时器完成后,它应该调用checkLogin((,后者应该调用refreshTimer((并重新启动进程。

我们第一次直接调用checkLogin((时,一切都很好。然而,当refreshTime((尝试调用checkLogin((时,我会收到checkLogin的"未定义函数"错误

从我的研究来看,我应该能够调用checkLogin((,而无需将其传递给refreshTime((。

我确信我可能遗漏了一些显而易见的东西。谢谢你的帮助!

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

不要将字符串传递给setTimeout;它是伪装的eval。在这种情况下,也没有理由捕获setTimeout返回的值。

function refreshTimer()
{
    setTimeout(checkLogin, 15000);
}
var t = setTimeout("checkLogin()",15000);

需要

var t = setTimeout(checkLogin,15000);

此方法接受函数而不接受字符串。