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

标签 javascript jquery function recursion undefined

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

2个功能:

  1. 检查登录()
  2. 刷新定时器()

我们调用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/

相关文章:

javascript - Mysqli/Ajax 如何在每个请求中加载多个结果?

javascript - 该值未插入到文本框中,它在两天前工作?

java - 为什么这个函数不能像它应该的那样向 ArrayList 添加项目?

javascript - Flutter Openweather API 调用

javascript - 根据 URL 中的变量/键显示不同的图像

javascript - 两个 onmouseout 事件对各自的元素执行相同的操作

java - 使用对象或字符串作为参数覆盖

sql - 更新表中的每一行

javascript - 在谷歌地图上着色

javascript - 如何在 Angular 中启用 PouchDB 调试