无法在javascript中第一次读取cookie

时间:2012-08-24 08:01:35

标签: javascript asp.net cookies

我正在使用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 个答案:

答案 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);

参考MSDN Cookies overview

答案 3 :(得分:1)

当您在过期日期间通过null时,它会将您的Cookie变为会话Cookie,该Cookie不会持续很长时间。

改变这个:

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

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

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

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