如何在jquery中读取cookie?

时间:2015-07-14 07:49:58

标签: jquery cookies

我正在使用carhartl的jQuery cookie插件创建一个包含对象的键和值的cookie。在我的一个方法中,我调用create cookie,然后我调用get cookie;但是read方法不起作用: makeCookie方法:

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

readCookie方法:

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

并调用这两种方法:

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

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

请在readCookie功能

中尝试此代码更改

readCookie方法:

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

答案 1 :(得分:0)

你的$ .cookie()方法看起来很好。

问题最可能在于popUps,它可能不是格式正确的JSON字符串,因为$ .parseJSON()非常敏感。

由于popUps是一个全局JavaScript对象,因此只需{J}解析就可以return $.cookie(name);

答案 2 :(得分:0)

解决了问题,将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];
    }
    }
}

答案 3 :(得分:0)

尝试

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