2012-04-12 96 views
0

在asp.net应用程序中我有一个Jquery函数。检查会话是否超时在jquery

我需要检查在会话超时这样的事情

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

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

回答

0

我会为此,请使用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> 
0

如果平均服务器端的会话状态,那么您可以在这样的功能做Ajax请求到服务器:

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