我正在尝试仅使用普通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等的单个值?我很难搞清楚这一点:/
答案 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: []
};
这样,每次迭代任务时都不必为全局函数创建一堆实例。