2015-02-23 51 views
0

我想读的只是普通的JavaScript的cookie。我没有使用任何jQuery cookie库。读一个cookie(这是一个对象)的纯JavaScript

这里是我的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的价值以后在不同的页面

我发现这个代码在计算器

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') 

但是,这是非常容易jQuery中,我stringify后。但是由于我需要使用纯JavaScript,所以有一些原因。我如何获取task_cookie对象内部的task1,task2等单个值?我有一个很难搞清楚了这一点:/

+0

既然你字符串化的话,我敢肯定,你必须得到thefull对象回来,但你可以得到各个部分出这一点。另外,如果您要参加多个部分,我认为这样会更快,因为只需要一个解析。 – David 2015-02-23 03:22:43

+0

你的意思是“如果你要多个部分”? – m86 2015-02-23 03:24:23

回答

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: [] 
}; 

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

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")); 
相关问题