2015-02-23 53 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")); 
相關問題