关于JS定时器判断cookie是否超时的问题(在线等,急求)

时间:2021-08-10 23:28:12
主要是实现这样一个功能,页面打开后,如果一段时间没有操作,就清楚Cookie然后提示他登陆超时然后自动刷新到登陆页面
下面贴下代码,我写了个JS,在每个模板页里面都引用了,但是只有首页弹出登陆超时,其他都不会,不知道为什么。
$(document).ready(function () {
    setInterval("Timer()", 62000);
})

function Timer() {
    var strUrl = "Customer/TimeOver?time="+Math.random;
    $.ajax({
        type: "POST",
        url: strUrl,
        success: function (data) {
            if (data.msg == "true") {
                alert("登陆超时,请重新登陆");
                window.parent.location.href = "/Account/LogOn";
            }
        }
    });
}



下面是后台代码
public ActionResult TimeOver()
        {
            if (LoginOut(User.Identity.Name))
            {
                FormsAuthentication.SignOut();
                return JsonGet(new { success = true, msg = "true" });
            }
            else
            {
                return JsonGet(new { success = false, msg = "false" });
            }
        }


请教各位大神,在线等,急求

7 个解决方案

#1


你这也太麻烦了吧,服务端session就有过期功能啊,难道我理解错了。

#2


该回复于2014-02-14 16:55:11被管理员删除

#3


引用 1 楼 gaowenzhen 的回复:
你这也太麻烦了吧,服务端session就有过期功能啊,难道我理解错了。
Session是在登陆的时候写入,然后超时的时候清空吗?

#4


信息不足无法判断,建议监听一下http响应

#5


在前端不是一样么、??? 为什么要搞到后端?

前端一样可以根据时间来设置超时啊!

#6


var strUrl = "Customer/TimeOver?time="+Math.random;

你写的是相对地址啊

还有cookie的过期时间js可以直接取到没必要用轮询

#7


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js读取cookie测试</title>
<link href="css/08nzfh-style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.STYLE1 {color: #FF0000}
-->
</style>
</head>

<body>

<div class="personality">
<script type="text/javascript">
//<![CDATA[
function   setCookie(name,value) 

    var   Days   =   30;   //此   cookie   将被保存   30   天 
    var   exp     =   new   Date();         //new   Date( "December   31,   9998 "); 
    exp.setTime(exp.getTime()   +   Days*24*60*60*1000); 
    document.cookie   =   name   +   "= "+   escape(value)   + ";expires= "+   exp.toGMTString(); 


function getCookie2(objName){//获取指定名称的cookie的值
   var arrStr = document.cookie.split("; ");
   for(var i = 0;i < arrStr.length;i ++){
    var temp = arrStr<i>.split("=");
    if(temp[0] == objName) return unescape(temp[1]);
   } 
}

var _b = false;
//setCookie("mycookie","mycookie");
 if(typeof(getCookie2("mycookie2"))   !=   'undefined')   
 {   
   alert(typeof(getCookie2("mycookie2")));
   _b = true; 
 } 
 alert(_b);
 if(_b){
  document.write('<iframe id="iframe_email" name="iframe_email" frameborder="0" scrolling="no" src="http://localhost:8008/vote1.4/test_8.jsp" height="100%" width="100%"></iframe>');
 }else{
  document.write('<iframe src="#" style="display:none;"></iframe> 请登录');
 } 
//]]>
</script>

#1


你这也太麻烦了吧,服务端session就有过期功能啊,难道我理解错了。

#2


该回复于2014-02-14 16:55:11被管理员删除

#3


引用 1 楼 gaowenzhen 的回复:
你这也太麻烦了吧,服务端session就有过期功能啊,难道我理解错了。
Session是在登陆的时候写入,然后超时的时候清空吗?

#4


信息不足无法判断,建议监听一下http响应

#5


在前端不是一样么、??? 为什么要搞到后端?

前端一样可以根据时间来设置超时啊!

#6


var strUrl = "Customer/TimeOver?time="+Math.random;

你写的是相对地址啊

还有cookie的过期时间js可以直接取到没必要用轮询

#7


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js读取cookie测试</title>
<link href="css/08nzfh-style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.STYLE1 {color: #FF0000}
-->
</style>
</head>

<body>

<div class="personality">
<script type="text/javascript">
//<![CDATA[
function   setCookie(name,value) 

    var   Days   =   30;   //此   cookie   将被保存   30   天 
    var   exp     =   new   Date();         //new   Date( "December   31,   9998 "); 
    exp.setTime(exp.getTime()   +   Days*24*60*60*1000); 
    document.cookie   =   name   +   "= "+   escape(value)   + ";expires= "+   exp.toGMTString(); 


function getCookie2(objName){//获取指定名称的cookie的值
   var arrStr = document.cookie.split("; ");
   for(var i = 0;i < arrStr.length;i ++){
    var temp = arrStr<i>.split("=");
    if(temp[0] == objName) return unescape(temp[1]);
   } 
}

var _b = false;
//setCookie("mycookie","mycookie");
 if(typeof(getCookie2("mycookie2"))   !=   'undefined')   
 {   
   alert(typeof(getCookie2("mycookie2")));
   _b = true; 
 } 
 alert(_b);
 if(_b){
  document.write('<iframe id="iframe_email" name="iframe_email" frameborder="0" scrolling="no" src="http://localhost:8008/vote1.4/test_8.jsp" height="100%" width="100%"></iframe>');
 }else{
  document.write('<iframe src="#" style="display:none;"></iframe> 请登录');
 } 
//]]>
</script>