Функция установки нескольких файлов cookie одновременно не работает - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу установить куки. У меня есть массив и функция setCookies. В этой функции я перебираю oop через массив myCookies и после некоторых манипуляций получаю строку. Эта строка должна устанавливать куки.

 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);

Когда я захожу в стри, я вижу строки, перечисленные ниже. Разве это не правильный способ настроить повара ie? Я думаю, это так, но почему это не работает? Когда я просто набираю свой код document.cook ie = "budgetMonth = someValue1", готовится ie.

document.cookie = "budgetMonth=someValue1";
document.cookie = "budgetDay=someValue2";
document.cookie = "expensesMonth=someValue3";

1 Ответ

1 голос
/ 18 апреля 2020

Есть несколько проблем с вашим кодом.

  1. структура, в которой вы сохраняете значения для файлов cookie, не обязательно неверна, но запись в виде myCookies = {name1: value1, name2: value2} упрощает ваш код косвенно проверяет, не устанавливаете ли вы одно и то же имя повара ie несколько раз (если вы действительно не хотите этого делать, например, задаете несколько путей для одного и того же ключа), и позволяет добавлять / удалять повара ie из списка, приведенного ниже, в вашем коде в гораздо более упрощенном виде;

  2. вы генерируете массив, а с этим массивом - строку, но вы ничего не делаете с любым из них. Чтобы на самом деле настроить повар ie, вы должны выполнить код document.cook ie = что-то.

Очень упрощенная версия вашего кода (непроверенная) была бы чем-то как:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...