场景是在网站上,用户可以多次选择商店,我想获取用户选择的所有商店,并为此使用cookie。
我想将cookie保存为JSON,例如{"storeId"、"0010"}、{"storeId"、《0011》}等。
所以下面的代码:它不是附加cookie,它只是覆盖值
function setCookieJson(name, value) {
var cookie = [name, '=', JSON.stringify(value), '; domain=.',
window.location.host.toString(), '; path=/;'].join('');
document.cookie = cookie;
}
setCookieJson('storeId', storeId);
我从上面的代码中得到的结果是:
storeId=";0010";
如果更改存储,则
storeId=";0011";
然而,预期结果应该是{"storeId","0010"},{"storeId","0011"}
我已经通过实现cookie已存在检查来解决这个问题:
代码:
function setCookieJson(name, value) {
var cookieExisted = getCookie(name).replace(/"/g,"");
var cookie;
if (cookieExisted.length) {
if (!cookieExisted.includes(value)) {
cookie = [name, '=', JSON.stringify(value + ',' + cookieExisted), '; domain=.', window.location.host.toString(), '; path=/;'].join('');
}
} else {
cookie = [name, '=', JSON.stringify(value), '; domain=.', window.location.host.toString(), '; path=/;'].join('');
}
document.cookie = cookie;
}