【问题标题】:Javascript - set multiple cookies in a JSON objectJavascript - 在 JSON 对象中设置多个 cookie
【发布时间】:2020-07-09 23:01:31
【问题描述】:

场景在网站上,用户可以多次选择商店,我想抓取用户选择的所有商店,我想为此使用 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"}

【问题讨论】:

  • “用户可以选择店铺” 店铺?您可以在 LS (localStorage) 中保存类似 (JSON.stringify-ed OFC:) {storesIDs: [0010, 0011]} 等...无需重复内容
  • 你的方法应该首先检查 cookie 是否已经存在,如果存在,获取现有数据以便附加到它,然后保存新的 cookie。

标签: javascript json cookies setcookie


【解决方案1】:

我通过实现 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;
}

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2013-11-01
    相关资源
    最近更新 更多