小唯快跑啊
2023-06-29 15:48:35
我想將 JSON 數組保存為 cookie 的形式。例如,數組如下所示。[{"name":"Push_up", "values":{"times":35, "date":"Jan 1", "sec":3}}, {"name":"Pull_up", "values":{"times":20, "date":"Mar 4", "sec":6}}]這是一個用于存儲cookie的函數。function setCookie(name, value, exp=1){ var date = new Date(); date.setTime(date.getTime() + exp*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + date.toUTCString() + ';path=/'; console.log(name + '=' + value + ';expires=' + date.toUTCString() + ';path=/');}我嘗試使用 Array.toString 并將其保存為 cookie,但它沒有正確字符串化,因此 cookie 未成功保存。我怎么解決這個問題?
2 回答

搖曳的薔薇
TA貢獻1793條經驗 獲得超6個贊
要序列化 JSON,您應該使用JSON.stringify
.
但對于一般情況,您還希望轉義 cookie 中具有特殊含義的字符,例如=
,因此使用escape
:
document.cookie?=?escape(JSON.stringify(value));
但是,更好的是 - 服務器真的需要這些信息,還是只與客戶端相關?如果它只與客戶端相關,那么有一個更好的解決方案,那就是使用本地存儲,例如:
localStorage.exerciseInfo?=?JSON.stringify(arrOfExercises);
并檢索它
const?arrOfExercises?=?JSON.parse(localStorage.exerciseInfo?||?'[]');
最好僅當存在客戶端和服務器都需要能夠持久讀取的信息(例如會話或登錄憑據)時才使用 cookie。

qq_花開花謝_0
TA貢獻1835條經驗 獲得超7個贊
var a = [{"name":"Push_up", "values":{"times":35, "date":"Jan 1", "sec":3}},
{"name":"Pull_up", "values":{"times":20, "date":"Mar 4", "sec":6}}];
JSON.stringify(a);
"[{"name":"Push_up","values":{"times":35,"date":"Jan 1","sec":3}},
{"name":"Pull_up","values":{"times":20,"date":"Mar 4","sec":6}}]"
添加回答
舉報
0/150
提交
取消