最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

asp.net - unable to read cookie first time in javascript - Stack Overflow

programmeradmin1浏览0评论

I am using Javascript to set the cookie and read the value from cookie.I am using the code available at .asp for creating and reading the value of cookie.when the page loads i am checking that whether that cookie exists or not .Every thing is working fine except it is not reading the cookie when i set it first time and try to read in next page load .it is setting the cookie but does not read only first time .

Here is my code :-

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);
}

And on page load i am using it like :-

$(document).ready(function () {

       var aZ = getCookie("menuSave");
       if (aZ) {
           //do Some thing here 
       }
       else {
           setCookie("menuSave", "mysp", null);

       }


   });

I am using Javascript to set the cookie and read the value from cookie.I am using the code available at http://www.w3schools./js/js_cookies.asp for creating and reading the value of cookie.when the page loads i am checking that whether that cookie exists or not .Every thing is working fine except it is not reading the cookie when i set it first time and try to read in next page load .it is setting the cookie but does not read only first time .

Here is my code :-

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);
}

And on page load i am using it like :-

$(document).ready(function () {

       var aZ = getCookie("menuSave");
       if (aZ) {
           //do Some thing here 
       }
       else {
           setCookie("menuSave", "mysp", null);

       }


   });
Share Improve this question edited Aug 24, 2012 at 8:10 Richard Ev 54.2k61 gold badges194 silver badges281 bronze badges asked Aug 24, 2012 at 8:01 PranavPranav 8,8714 gold badges28 silver badges42 bronze badges 5
  • Please show us your exact javascript code. That's the only way we can see what the problem is with YOUR code. – jfriend00 Commented Aug 24, 2012 at 8:04
  • @jfriend00:- I have updated my question with code . – Pranav Commented Aug 24, 2012 at 8:08
  • 3 @Pranav Don't use w3schools. as a reference (see w3fools.), better rely on the Mozilla Developer Network – Andreas Commented Aug 24, 2012 at 8:11
  • Do you have any cookie viewer on your browser (or developer tools if you use mozilla?). It's a long guess but since you haven't setup a path and a domain, it creates different cookies (depending on your page path). – Panagiotis Commented Aug 24, 2012 at 8:13
  • @Andreas:- +1 for you . since i was using W3school's code as reference and i was not setting the path. the whole problem was due to that. MDN is good for learning i totally agree. – Pranav Commented Aug 24, 2012 at 11:25
Add a ment  | 

4 Answers 4

Reset to default 3

You need to add a 'path' to your cookie. For example:

document.cookie = 'ppkcookie2=yet another test; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/';

The path represents the relative path in your website which the cookie will be readable.

path=/ means it'll be readable on your whole website.
path=/mon/ means it'll be readable only in /mon/ folder (and its subfolders)

This might not be the answer to your problem but yet a alternative easier solution, hope it helps!

save menu

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

load value

localStorage.getItem("menusave");

Just trying to help!

Since you have marked the question as asp,

You can set the cookies as follows:

HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);

And read it back like:

if(Request.Cookies["lastVisit"] != null)
    Label1.Text = Server.HtmlEncode(Request.Cookies["lastVisit"].Value);

Refer MSDN Cookies overview

When you pass null for the expiration days it makes your cookie into a session cookie that will not persist very long.

Change this:

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

to this to give it an actual expiration date:

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

If you want to retrieve the cookie from any page besides the exact same page that set it, you will also need to set a path value in the cookie that allows the cookie to be retrieved on more than just the exact page that set it.

发布评论

评论列表(0)

  1. 暂无评论