2

私は Javascript を使用して Cookie を設定し、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=Fri, 27 Jul 2001 02:47:11 UTC; パス=/';

パスは、Cookie が読み取り可能な Web サイト内の相対パスを表します。

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

有効期限を過ぎるnullと、Cookie はセッション Cookie になり、あまり長くは保持されません。

これを変える:

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

これに実際の有効期限を与えるために:

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

Cookie を設定したのとまったく同じページ以外の任意のページから Cookie を取得する場合は、Cookie を設定した正確なページ以外でも Cookie を取得できるように、Cookie にパス値を設定する必要があります。

于 2012-08-24T09:07:36.260 に答える
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 に答える