0

我陷入了与会话超时()相关的情况,而用户仍然在网页上处于活动状态。

在点击网页上的特定链接时发生了什么,用户被重定向到弹出页面。这个弹出窗口包含一个 Oracle 表单(基本上是一个小程序),这个小程序嵌入在 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 不工作是小程序是焦点。

我想从客户端解决这个问题。有没有更好的方法?

4

1 回答 1

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>
于 2013-07-18T07:10:23.693 回答