我正在使用Javascript来设置cookie并从cookie中读取值。我正在使用http://www.w3schools.com/js/js_cookies.asp处提供的代码来创建和读取cookie的值。当页面加载时我正在检查是否该cookie是否存在。每件事都运行正常,但是当我第一次设置它并尝试读取下一页加载时它没有读取cookie。它正在设置cookie但不是第一次只读。
这是我的代码: -
function setCookie(c_name, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
//To get the cookie:-
function getCookie(c_name) {
var i, x, y, ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name) {
return unescape(y);
}
}
}
//to Delete the cookie:-
function cookieDelete(c_name) {
setCookie(c_name, "delete", -1);
}
在页面加载时,我使用它: -
$(document).ready(function () {
var aZ = getCookie("menuSave");
if (aZ) {
//do Some thing here
}
else {
setCookie("menuSave", "mysp", null);
}
});
答案 0 :(得分:3)
您需要为Cookie添加“路径”。例如:
document.cookie = 'ppkcookie2=yet another test; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/';
路径表示您的网站中可读取cookie的相对路径。
path=/
表示它在您的整个网站上都可读
path=/common/
表示它只能在/ common /文件夹(及其子文件夹)
答案 1 :(得分:2)
这可能不是您问题的答案,但却是另一种更简单的解决方案,希望它有所帮助!
保存菜单
localStorage.setItem("menusave","vale");
加载值
localStorage.getItem("menusave");
试着帮忙!
答案 2 :(得分:1)
由于您已将问题标记为asp.net,
您可以按如下方式设置Cookie:
HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
并将其读回:
if(Request.Cookies["lastVisit"] != null)
Label1.Text = Server.HtmlEncode(Request.Cookies["lastVisit"].Value);
答案 3 :(得分:1)
当您在过期日期间通过null
时,它会将您的Cookie变为会话Cookie,该Cookie不会持续很长时间。
改变这个:
setCookie("menuSave", "mysp", null);
给它一个实际的到期日期:
setCookie("menuSave", "mysp", 7);
如果你想从设置它的完全相同的页面之外的任何页面检索cookie,你还需要在cookie中设置一个路径值,允许在不仅仅设置的页面上检索cookie。它