[英]Set cookie with array() in jquery
我希望能够检查是否设置了 cookie(id):如果未设置,则创建它。 如果设置,则检索值(= 数组)。 如何从 cookie 中检索数组? 我听说我必须使用 JSON,但我不确定这将如何与以下代码一起使用?
function start(id){
if (document.cookie.indexOf('id') === -1 ) {
setCookie('id', id, 7);
}
else {
var playedID = [GET COOKIE ARRAY]
playedID.push(id);
setCookie('id',playedID);
}
}
这是一种基于一些辅助函数的方法,可确保您正确解析和字符串化 cookie。
getCookie 和 setCookie 来自https://www.w3schools.com/js/js_cookies.asp
// This won't run due to security policies on this site, but you can run it in the dev tools and see. function getCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } function getCookieArray(cname) { var cookie = getCookie(cname); return cookie? JSON.parse(cookie): []; } function pushToCookieArray(cname, cvalue, exdays) { var cookieArray = getCookieArray(cname); cookieArray.push(cvalue); setCookie(cname, JSON.stringify(cookieArray), exdays); } function start(id) { pushToCookieArray('id', id, 7); console.log(getCookieArray('id')); } start(5); start(6); start(8);
document.cookie
,您将从正在访问的网站中获取所有 cookies,并以逗号分隔。如此处所述: https://www.w3schools.com/js/js_cookies.asp ,您必须创建自定义 function 才能访问所需的 cookie。
JSON.stringify
将你的数组编码为字符串: 我想将 Javascript 数组存储为 Cookie然后您可以创建它或更新它的值:
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function setCookie(cname, cvalue) {
document.cookie = cname + "=" + cvalue + ";";
}
function start(id){
if (getCookie('id') === '' ) {
setCookie('id', JSON.stringify([+id]));
}
else {
let ids = JSON.parse(getCookie('id'))
console.log(ids)
ids.push(+id);
setCookie('id', JSON.stringify(ids));
}
}
function sendID(id) {
console.log(document.getElementById("user-id").value)
start(id);
alert(getCookie("id"))
}
这是一个工作示例: https://codepen.io/adrientiburce/pen/ExVbYWy?editors=1010
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.