2017-08-15 78 views
1

我想存儲cookie內的對象數組。在cookie中存儲對象數組,純javascript,沒有jquery?

不使用jQuery或角度。

function setCook (name,value) { 
    var cookie = [name, '=', JSON.stringify(value)].join(''); 
    document.cookie = cookie; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
    var c = ca[i]; 
    while (c.charAt(0)==' ') c = c.substring(1,c.length); 
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 
+0

你可以舉一個這個對象的例子,也許顯示你的預期輸出應該是什麼?謝謝。 – NewToJS

+0

*「我試圖存儲cookie內的對象數組」*您真的要使用**服務器**上的對象嗎?如果沒有,餅乾是一個不好的選擇。使用網絡存儲,所以你不會膨脹請求到你的服務器,並且因爲API顯着**更好。 –

+1

似乎沒有你發佈的特定於jQuery或角色的代碼的任何方面... – Pineda

回答

0

只是JSON.parse你的回報:

https://repl.it/KKoF

function setCook(name, value) { 
    var cookie = [ 
     name, 
     '=', 
     JSON.stringify(value) 
    ].join(''); 
    document.cookie = cookie; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i = 0; i < ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') c = c.substring(1, c.length); 
     if (c.indexOf(nameEQ) === 0) { 
      return JSON.parse(
       c.substring(nameEQ.length, c.length) 
      ); 
     } 
    } 
    return null; 
} 

setCook('foo', `[ 
    { 
     "qux": "boz" 
    }, 
    { 
     "baz": "zot" 
    } 
]`); 
let obj = readCookie('foo'); 

console.log(obj); 

/* 
[ 
    { 
     "qux": "boz" 
    }, 
    { 
     "baz": "zot" 
    } 
] 
*/ 
0

你在本地文件系統,而不是一個服務器上運行呢? 根據瀏覽器使用file:///協議進行瀏覽時,Cookies未設置。

+2

請發表評論,因爲它不是一個完整的答案 – Kai

相關問題