2

我正在使用 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);

       }


   });
4

4 回答 4

3

您需要为您的 cookie 添加一个“路径”。例如:

document.cookie = 'ppkcookie2=又一次测试;expires=2001 年 7 月 27 日星期五 02:47:11 UTC;路径=/';

路径代表您网站中 cookie 可读的相对路径。

path=/意味着它将在您的整个网站上可读。
path=/common/意味着它只能在 /common/ 文件夹(及其子文件夹)中读取

于 2012-08-24T08:27:10.567 回答
2

这可能不是您问题的答案,而是另一种更简单的解决方案,希望对您有所帮助!

保存菜单

localStorage.setItem("menusave","vale");

负载值

localStorage.getItem("menusave");

只是想帮忙!

于 2012-08-24T08:13:50.833 回答
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);

请参阅MSDN Cookie 概述

于 2012-08-24T08:54:16.173 回答
1

当您通过null到期日时,它会使您的 cookie 成为不会持续很长时间的会话 cookie。

改变这个:

setCookie("menuSave", "mysp", null);

给它一个实际的到期日期:

setCookie("menuSave", "mysp", 7);

如果您想从设置它的完全相同页面之外的任何页面检索 cookie,您还需要在 cookie 中设置一个路径值,以允许在不只是设置它的确切页面上检索 cookie。

于 2012-08-24T09:07:36.260 回答