我遇到与会话超时相关的情况()当用户在网页上仍处于活动状态时。
当点击网页上的特定链接时,用户被重定向到弹出页面时发生了什么。这个弹出窗口包含一个Oracle表单(基本上是一个applet),这个applet嵌入在HTML页面中。
当用户正在处理此弹出窗口时,所有请求都将转向与Jboss服务器不同的表单服务器。所以经过一段时间会议结束。
我采用以下方法来解决此问题:
我在下面的弹出页面中添加了这个jquery代码。
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
var timer=0;
function run(){
timer++;
if(timer == 2){
$(document).bind('keyup mousemove',function(){
$(this).unbind('keyup mousemove');
$.ajax({
url: 'https://bdqap1.acclaris.com/bensol/common/refreshsession.jsp',
cache: false,
data: 'html',
success: function(data,status) {
}
});
timer=0;
});
}
}// run ends here
setInterval(run,1000);
</script>
此代码在弹出窗口上的任何鼠标或键盘移动中调用jboss服务器中的链接。这应该在用户活动时保持会话活动。
但是这种方法不起作用,因为jquery代码无法检测到Applet部分的任何移动。 Jquery无法运行applet是焦点。
我想从客户端解决此问题。有没有更好的方法?
答案 0 :(得分:0)
您每2秒绑定并重新绑定事件处理程序。每30秒简单地执行一次ajax请求可能更简单(或者任何适当的时间来防止会话超时:
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
function run(){
$.ajax({
url: 'https://bdqap1.acclaris.com/bensol/common/refreshsession.jsp',
cache: false,
data: 'html',
success: function(data,status) {}
});
}// run ends here
setInterval(run,30000);
</script>