javascript - 一次设置多个cookie的功能不起作用
问题描述
我想设置cookies。我有一个数组和一个函数 setCookies。在这个函数中,我遍历 myCookies 数组,经过一些操作后得到一个字符串。该字符串应该设置 cookie。
const myCookies =
[
{budgetMonth: someValue1},
{budgetDay: someValue2},
{expensesMonth: someValue3}
];
function setCookies(myCookies) {
let arr = [];
for(let i of Object.keys(myCookies)) {
let myItems = myCookies[i];
for(let y of Object.keys(myItems)) {
arr.push('document.cookie ' + '= "' + y + '=' + myItems[y] + "\"");
}
}
let stri = '';
arr.forEach(item => {
stri += item + ';'
});
return stri;
}
setCookies(myCookies);
当我记录 stri 时,我看到下面列出的字符串。这不是设置cookie的正确方法吗?我想是的,但为什么它不起作用?当我输入我的代码 document.cookie = "budgetMonth=someValue1" 时,cookie 就设置好了。
document.cookie = "budgetMonth=someValue1";
document.cookie = "budgetDay=someValue2";
document.cookie = "expensesMonth=someValue3";
解决方案
您的代码有几个问题。
您存储 cookie 值的结构不一定不正确,但将其编写为
myCookies = {name1: value1, name2: value2}
简化代码,间接验证您是否没有多次设置相同的 cookie 名称(除非您真的想这样做,设置多个路径,例如相同的键),并允许您稍后在代码中以更简化的方式从列表中添加/删除 cookie;您正在生成一个数组,并使用该数组生成一个字符串,但您没有对它们中的任何一个做任何事情。要实际设置 cookie,您必须执行代码 document.cookie = something。
您的代码(未经测试)的一个非常简化的版本将类似于:
const myCookies = {
budgetMonth: someValue1,
budgetDay: someValue2,
expensesMonth: someValue3
};
function setCookies(myCookies) {
for(let k of Object.keys(myCookies)) {
document.cookie = k + "=" + myCookies[k];
}
}
setCookies(myCookies);
推荐阅读
- flutter - 如何通过检测用户居住的国家/地区来集成货币转换器功能
- python - Arduino串行通信列表没有通过python完全发送
- getstream-io - GetStream.com 问题:发布内容的用户如何删除/编辑他的帖子
- html - 在 % 动画 css 中使用变换:旋转
- if-statement - 在 Google 表格中获取指向此单元格的链接
- c - 为什么 putw on 用 getw 显示正确的输出,而 fprintf 和 printf 只用 scanf 显示正确的输出?
- reactjs - Reactjs 从另一个组件调用函数
- java - 创建与现有实体相关的新实体
- dictionary - 在 Java 中计算 HashMap 中的键数
- javascript - 如何在反应导航 5.x 中隐藏选项卡导航(底部选项卡)的标题?