如何使用JavaScript实现会话到期提醒?
我真的很想在会话到期前提示用户保持会话的活动状态 昨天,我问了一个问题“”,有人用一个AJAX/JSON解决方案回答,该解决方案每30秒调用一次ASP页面。这不起作用,因为对服务器的调用使会话保持活动状态,因此它永远不会注销 我一直在阅读,遇到了一个类似的问题,有人建议在会话到期前5分钟使用JS倒计时提示用户续订会话 这是我迄今为止所做的,但:如何使用JavaScript实现会话到期提醒?,javascript,jquery,session,Javascript,Jquery,Session,我真的很想在会话到期前提示用户保持会话的活动状态 昨天,我问了一个问题“”,有人用一个AJAX/JSON解决方案回答,该解决方案每30秒调用一次ASP页面。这不起作用,因为对服务器的调用使会话保持活动状态,因此它永远不会注销 我一直在阅读,遇到了一个类似的问题,有人建议在会话到期前5分钟使用JS倒计时提示用户续订会话 这是我迄今为止所做的,但: 函数startminitimer似乎没有保留时间,因为我没有在计时器到期时收到警报 $('body').mousedown()功能不能正常工作。它可以工
startminitimer
似乎没有保留时间,因为我没有在计时器到期时收到警报$('body').mousedown()
功能不能正常工作。它可以工作,但如果用户单击链接,mousedown函数可以工作,但在函数运行后不会跟随链接<script>
$(document).ready(function() {
$.ajax({ // get session expiration value e.g. 60
type : 'GET',
url : '../getSessionValue.asp',
dataType : 'text',
success : function(data) {
if (data != '') {
var newSessionValue = data - 5
startMainTimer(newSessionValue * 60000); // deduct 5 minutes, convert to mSeconds & call startNewTimer()
}
}
});
$('body').mousedown( function() { // if user clicks anywhere on page call ajaxRenewSession() function
ajaxRenewSession();
});
$('#userButtonRenewSession').click( function() { // if user clicks continue browsing button
ajaxRenewSession();
});
});
function startMainTimer(newSessionValue,restart) {
if (restart == 'yes') {
clearInterval(interval);
}
var counter = 0;
var interval = setInterval(function() {
counter++;
if (counter == newSessionValue) {
alert("Your session is about to expire!");
clearInterval(interval);
}
}, 1000);
}
function ajaxRenewSession() { // AJAX the server to renew session, get session timeout value and then reset JS timer
$.ajax({
type : 'GET',
url : '../renewSession.asp',
dataType : 'text',
success : function(data) {
if (data != '') {
var newSessionValue = data - 5
startMainTimer(newSessionValue * 60000, 'yes');
}
}
});
}
</script>
$(文档).ready(函数(){
$.ajax({//获取会话到期值,例如60
键入:“GET”,
url:“../getSessionValue.asp”,
数据类型:“文本”,
成功:功能(数据){
如果(数据!=''){
var newSessionValue=data-5
开始计时器(newSessionValue*60000);//扣除5分钟,转换为毫秒并调用开始计时器()
}
}
});
$('body').mousedown(function(){//如果用户单击页面上的任何位置,请调用AjaxRenewalSession()函数
ajax会话();
});
$('#UserButtonNewSession')。如果用户单击“继续浏览”按钮,请单击(函数(){//)
ajax会话();
});
});
函数startMainTimer(newSessionValue,重新启动){
如果(重新启动==“是”){
间隔时间;
}
var计数器=0;
var interval=setInterval(函数(){
计数器++;
if(计数器==newSessionValue){
警报(“您的会话即将过期!”);
间隔时间;
}
}, 1000);
}
函数ajaxRenewalSession(){//AJAX命令服务器更新会话,获取会话超时值,然后重置JS计时器
$.ajax({
键入:“GET”,
url:“../renewSession.asp”,
数据类型:“文本”,
成功:功能(数据){
如果(数据!=''){
var newSessionValue=data-5
StartInitiatier(newSessionValue*60000,“是”);
}
}
});
}
有人能帮我纠正这些问题吗?鼠标的功能似乎有效,我在stackoverflow.com上测试了它。但是,在某些情况下,它可能不起作用,例如,如果用户按下链接,拖动链接,然后将其删除。在这种情况下,没有为我提出任何事件 另一件事:您必须在
startMainTimer
的开头清除主计时器,否则,每次用户单击某个位置时,都会启动一个额外的计时器
你知道最后一次调用
startMainTimer
时遗漏了一个参数吗?使用mouseup
的方法似乎有效,我在stackoverflow.com上测试了它。但是,在某些情况下,它可能不起作用,例如,如果用户按下链接,拖动链接,然后将其删除。在这种情况下,没有为我提出任何事件
另一件事:您必须在startMainTimer
的开头清除主计时器,否则,每次用户单击某个位置时,都会启动一个额外的计时器
您知道上次调用
startMaintime
时遗漏了一个参数吗?这是一个问题。我不知道有一个代码审查站点,我也会以分钟或秒为单位计算时间,将其添加到当前客户端的机器时间中,然后轮询一个是否大于另一个。您只需确保每次服务器请求(AJAX、常规页面请求等)都会更新该时间,以使会话保持活动状态。将其保存在cookie中可能是最简单的方法。这是一个问题。我不知道有一个代码审阅站点。我也会以分钟或秒为单位计算时间,将其添加到当前客户端的计算机时间中,然后轮询以查看其中一个是否大于另一个。您只需确保每次服务器请求(AJAX、常规页面请求等)都会更新该时间,以使会话保持活动状态。将其保存在cookie中可能是最简单的方法。我认为mousedown()效果更好。它适用于标准的点击和拖放…我刚刚编辑了我的问题,以显示缺少的参数,并在脚本检测到用户鼠标活动时清除计时器。这就是你的意思吗?我认为mousedown()更好用。它适用于标准的点击和拖放…我刚刚编辑了我的问题,以显示缺少的参数,并在脚本检测到用户鼠标活动时清除计时器。这就是你的意思吗?