我有一个页面,客户有时会长时间打开而不刷新(超过24小时)。该页面上的一些操作需要有效的PHP会话,因此我构建了一组简单的函数来每10分钟运行一次这种检查。
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
答案 0 :(得分:2)
不要将字符串传递给setTimeout
; it'seval
in disguise。在这种情况下,也没有理由捕获setTimeout
返回的值。
function refreshTimer()
{
setTimeout(checkLogin, 15000);
}
答案 1 :(得分:1)
var t = setTimeout("checkLogin()",15000);
需要
var t = setTimeout(checkLogin,15000);
此方法接受函数而不接受字符串。