我有一个页面显示从cookie中读取的数据。 Cookie会在一小时后过期。用户经常会导航到页面并保持打开状态。当他们稍后再回来时,cookie已经过期,页面上的数据不再相关。
有人可以建议我如何将Cookie的到期时间设置为持续会话的长度吗?
作为参考,这是我用来设置cookie的代码(我从我们拥有的另一个项目中解除了这个代码,而这个代码可能已经从这个网站上解除了!: - )
function setCookie(value)
{
var today = new Date();
today.setTime(today.getTime());
var expires = 30 * 1000 * 60;
var c_name = 'CompareFundIds';
var exdate = new Date(today.getTime() + (expires));
document.cookie = c_name + "=" + value + ";expires=" + exdate.toGMTString();
}
答案 0 :(得分:2)
您的标题和文字似乎说明了两个不同的要求:
1)将起作用:
// Set cookie until browser is closed
document.cookie = c_name + "=" + value;
2)如果你让setCookie函数重复运行,只要页面打开就行了,比如每分钟:
// Set cookie every minute
var value = ...;
window.setInterval(function () {
setCookie(value);
}, 60 * 1000);
当浏览器关闭时,cookie将永远不会超过1分钟,因此将在另一个小时内有效。
答案 1 :(得分:1)
有人可以建议我如何将Cookie的到期时间设置为持续会话的长度吗?
据我所知,这是不可能的。
您可以做的是更改服务器逻辑。镜像会话和cookie中的值。首先从会话中读取,如果不存在,则返回cookie。这应该可以解决问题。
答案 2 :(得分:0)
也许您可以使用Ajax调用PHP文件来保持服务器端的会话活动吗?
答案 3 :(得分:0)
这是不是可以使用onUnload / onClose javascript事件吗?理想情况下,您可以在页面加载时设置一些行为,然后在页面卸载时设置另一个行为。当然,所有浏览器都不支持onClose,但我发现jQuery确实支持onunload方法。
参考文献: