【问题标题】:Checking if session has timed out in Jquery检查会话是否在 Jquery 中超时
【发布时间】:2012-04-12 14:44:37
【问题描述】:

在一个 asp.net 应用程序中,我有一个 Jquery 函数。

我需要检查会话是否有类似这样的超时

function Myfunction() {
    if(FuctionHasTimedOut)
    {
        return 1;
    }
    else
    {
        return 2;
    }
}

如何做到这一点?非常感谢您的帮助

【问题讨论】:

    标签: jquery asp.net session


    【解决方案1】:

    我会为此使用PageMethod。这是我找到的一些代码here:

    [WebMethod]
    public static bool HasSessionTimedOut()
    {
        HttpSessionState session = HttpContext.Current.Session;
    
        // I put this value into Session at the beginning.
        DateTime? sessionStart = session[SessionKeys.SessionStart] as DateTime?;
    
        bool isTimeout = false;
    
        if (!sessionStart.HasValue)
        {
            isTimeout = true;
        }
        else
        {
            TimeSpan elapsed = DateTime.Now - sessionStart.Value;
            isTimeout = elapsed.TotalMinutes > session.Timeout;
        }
    
        return isTimeout;
    }
    

    这是我的 Javascript:

    <script type="text/javascript">                                   
        $(function() {                                                 
            var callback = function(isTimeout) {
                if (isTimeout) {                           
                    // Show your pop-up here...
                }                         
            };                                                         
            setInterval(                                                
                function() {
                    // Don't forget to set EnablePageMethods="true" on your ScriptManager.
                    PageMethods.HasSessionTimedOut(false, callback);    
                },                                                     
                30000                                                   
            );                                                          
        });                                                            
    </script> 
    

    【讨论】:

      【解决方案2】:

      如果是指服务器端的会话状态,那么你可以在这样的功能中向服务器发出ajax请求:

      function Myfunction() {
          $.post('{urlToHandler}', function(){
              // server should return some session value, that would indicate that session state  is accesible
          });
      }
      

      【讨论】:

        【解决方案3】:

        试试这个插件http://philpalmieri.com/js_sandbox/timedLogout/jquery-idleTimeout.js

        /** Run with defaults **/
          $(document).ready(function(){
            $(document).idleTimeout();
          });
        
        
        /** With Optional Overrides **/
          $(document).ready(function(){
            $(document).idleTimeout({
              inactivity: 30000,
              noconfirm: 10000,
              sessionAlive: 10000
            });
          });
        

        【讨论】:

          猜你喜欢
          • 2011-03-26
          • 2011-09-04
          • 2011-09-01
          • 2013-01-19
          • 2011-12-29
          • 2018-04-04
          • 2013-02-26
          • 2013-05-22
          相关资源
          最近更新 更多