Javascript 在asp.net中如何在会话超时之前触发函数
我想调用一个方法来跟踪用户活动的签入和签出。我将会话超时设置为使会话过期,但在会话超时之前,我想存储用户活动。因此,我尝试在javascript中使用ajax调用一个方法,以便在会话到期之前运行该方法。不幸的是,该方法没有运行。下面是我的代码 管理主控计算机系统Javascript 在asp.net中如何在会话超时之前触发函数,javascript,asp.net,ajax,session,Javascript,Asp.net,Ajax,Session,我想调用一个方法来跟踪用户活动的签入和签出。我将会话超时设置为使会话过期,但在会话超时之前,我想存储用户活动。因此,我尝试在javascript中使用ajax调用一个方法,以便在会话到期之前运行该方法。不幸的是,该方法没有运行。下面是我的代码 管理主控计算机系统 protected void Page_Load(object sender, EventArgs e) { Response.Cache.SetCacheability(HttpCac
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
if (!this.IsPostBack)
{
Session["Reset"] = true;
Configuration config = WebConfigurationManager.OpenWebConfiguration("~/Web.Config");
SessionStateSection section = (SessionStateSection)config.GetSection("system.web/sessionState");
int timeout = (int)section.Timeout.TotalMinutes * 1000 * 60;
Page.ClientScript.RegisterStartupScript(this.GetType(), "SessionAlert", "SessionExpireAlert(" + timeout + ");", true);
}
}
[WebMethod]
public void logout_timeout() //This method i have to run
{
}
管理硕士
<script type="text/javascript">
function SessionExpireAlert(timeout)
{
debugger
var seconds = timeout / 1000;
document.getElementsByName("secondsIdle").innerHTML = seconds;
document.getElementsByName("seconds").innerHTML = seconds;
setInterval(function () {
seconds--;
document.getElementById("seconds").innerHTML = seconds;
document.getElementById("secondsIdle").innerHTML = seconds;
}, 1000);
setTimeout(function ()
{
//Show Popup before 20 seconds of timeout.
$.ajax({
type: "POST",
url: "Admin.Master/logout_timeout",
data: "{}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: OnSuccess,
error: OnError
});
$find("mpeTimeout").show();
}, timeout - 20 * 1000);
setTimeout(function () {
window.location = "Login.aspx";
//$.ajax(
// {
// type: "POST",
// contentType: "application/json; charset=utf-8",
// url: "Case.aspx/removeTrans",
// data: "{ 'DelData':'" + transId + "'}",
// success: function (result) { window.location.reload(true); console.log("successful!"); }
// })
}, timeout);
};
函数SessionExpireAlert(超时)
{
调试器
var秒=超时/1000;
document.getElementsByName(“secondsIdle”).innerHTML=seconds;
document.getElementsByName(“秒”).innerHTML=seconds;
setInterval(函数(){
秒--;
document.getElementById(“秒”).innerHTML=seconds;
document.getElementById(“secondsIdle”).innerHTML=seconds;
}, 1000);
setTimeout(函数()
{
//在超时20秒前显示弹出窗口。
$.ajax({
类型:“POST”,
url:“管理员主机/注销超时”,
数据:“{}”,
数据类型:“json”,
contentType:“应用程序/json;字符集=utf-8”,
成功:一旦成功,
错误:OnError
});
$find(“mpeTimeout”).show();
},超时-20*1000);
setTimeout(函数(){
window.location=“Login.aspx”;
//$.ajax(
// {
//类型:“POST”,
//contentType:“应用程序/json;字符集=utf-8”,
//url:“Case.aspx/removeTrans”,
//数据:“{'DelData':'”+transId+“}”,
//成功:函数(结果){window.location.reload(true);console.log(“成功!”);}
// })
},超时);
};
将logout\u timeout函数移动到xxxx.aspx,并调用Ajax URL“xxxx.aspx/logout\u timeout”。在这种情况下,我在other xxxx.aspx中使用了其他方法,但也没有运行。首先,是否调用了SessionExpireAlert?是的,这被调用了。我怀疑您的js代码格式不正确。除了$ajax调用,你能评论所有代码吗?除了ajax调用,你评论了完整的JavaScript函数。该方法尚未运行。