在纯JavaScript中读取cookie(这是一个对象)

时间:2015-02-23 03:19:31

标签: javascript cookies

我正在尝试仅使用普通javascript读取cookie。我没有使用任何jquery cookie库。

以下是我的Cookie的外观:

var task_cookie = {
                   task1 : getTask('task1') 
                 , task2 : getTask('task2')
                 , task3: getTask('task3')
                 , task4: getTask('task4') 
                 , task5: getTask('task5')                  
 };

document.cookie = "task_cookie=" + JSON.stringify(task_cookie)+";path=/;domain=.task.com";

现在,我正试图在不同的页面上阅读task_cookie的值

我在stackoverflow上找到了这段代码

function read_cookie(name) {
 var result = document.cookie.match(new RegExp(name + '=([^;]+)'));
 result && (result = JSON.parse(result[1]));
 return result;
}

但是这会给我整个task_cookie.I但是想要获取task_cookie中的每个键值。我想要这样的东西:

$.cookie('task1')
$.cookie('task2')

然而,在stringify之后,这在jquery中非常容易。但是我需要使用纯粹的javascript。如何获取task_cookie对象中的task1,task2等的单个值?我很难搞清楚这一点:/

2 个答案:

答案 0 :(得分:0)

因此,在获得对象后,请从cookie中读取值。

function read_cookie(name) {
 var result = document.cookie.match(new RegExp('tasj_cookie=([^;]+)'));
 result && (result = JSON.parse(result[1]));
 return result ? result[name] : null;
}

更好的是,使用localstorage而不是cookie。

localstorage.setItem("task1", getTask('task1'));


function read_storage (name) {
    return localstorage.getItem(name);  //might need to use JSON.parse() depending on the data
}
console.log(read_storage("task1"));

答案 1 :(得分:0)

该函数返回整个对象,因此您只需从函数中选择一个cookie:

read_cookie('task_cookie')['task1'];

或类似的东西。以上只会返回task1,但您可以遍历所有任务。

更好的是,您可以将read_cookie函数作为对象方法,并将cookie对象返回到父对象的属性。

var cookieHandler = {
    get: function(name) {
        //code to get cookies 
        //push to cookies array 
    },
    cookies: []
};

这样,每次迭代任务时都不必为全局函数创建一堆实例。