如何读取 jquery 中的 cookie?

how to read cookies in jquery?

我正在使用 carhartl 的 jQuery cookie 插件创建一个带有对象的键和值的 cookie,在我的方法之一中我调用了 create cookie,然后我调用了 get cookie;但是读取方法不起作用: makeCookie 方法:

function makeCookie(name,value){
    $.cookie(name,value);
}

readCookie 方法:

function readCookie(name){
    $.parseJSON($.cookie(name));
}

并调用这 2 个方法:

makeCookie('chatPopups',popUps);
    var all=readCookie('chatPopups');
    alert(all);

popUps 是一个全局 javascript 对象;

我得到的错误是:

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

有人可以帮我吗?

请尝试在 readCookie 函数中更改此代码

readCookie 方法:

function readCookie(name){
    return $.cookie(name); // no parse needed because its not a json object of cookie
}

您的 $.cookie() 方法看起来不错。

问题很可能出在弹出窗口上,它可能不是格式正确的 JSON 字符串,因为 $.parseJSON() 非常敏感。

由于 popUps 是一个全局 JavaScript 对象,您可以 return $.cookie(name); 而不 JSON 解析。

解决了问题,将 makeCookie 方法更改为:

function makeCookie(name,value){
    $.cookie(name,$.param(value),{ path: '/' });
}

和 readCookie 方法:

function readCookie(name){
    var readCookie=$.cookie(name);
    readCookie = readCookie.split('&');
    if(readCookie.length != 0){
    for (i=0; i<readCookie.length; i++) {
        readCookie[i] = readCookie[i].split('=');
        popUps[readCookie[i][0]] = readCookie[i][1];
    }
    }
}

试试这个

function getCookieValue(cname) { // cname is nothing but the cookie value which contains 
                            // the value
                    var name = cname + "=";
                      var decodedCookie = decodeURIComponent(document.cookie);
                      var ca = decodedCookie.split(';');
                      for(var i = 0; i <ca.length; i++) {
                        var c = ca[i];
                        while (c.charAt(0) == ' ') {
                          c = c.substring(1);
                        }
                        if (c.indexOf(name) == 0) {
                          return c.substring(name.length, c.length);
                        }
                      }
                      return "";
                    }