【发布时间】:2012-04-12 14:44:37
【问题描述】:
在一个 asp.net 应用程序中,我有一个 Jquery 函数。
我需要检查会话是否有类似这样的超时
function Myfunction() {
if(FuctionHasTimedOut)
{
return 1;
}
else
{
return 2;
}
}
如何做到这一点?非常感谢您的帮助
【问题讨论】:
在一个 asp.net 应用程序中,我有一个 Jquery 函数。
我需要检查会话是否有类似这样的超时
function Myfunction() {
if(FuctionHasTimedOut)
{
return 1;
}
else
{
return 2;
}
}
如何做到这一点?非常感谢您的帮助
【问题讨论】:
我会为此使用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>
【讨论】:
如果是指服务器端的会话状态,那么你可以在这样的功能中向服务器发出ajax请求:
function Myfunction() {
$.post('{urlToHandler}', function(){
// server should return some session value, that would indicate that session state is accesible
});
}
【讨论】:
试试这个插件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
});
});
【讨论】: