Создайте простой массив многомерных объектов и присвойте им файлы cookie. - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь создать корзину покупок для анонимных пользователей, которая хранится в файле cookie на компьютере пользователя.Но я в замешательстве.

Вот мой код

  $(document).ready(function () {
                var PID = $('#Input_Product').val();
                var Qty = $('#Input_Qty').val();
                var P = $('#Input_Price').val();

                var data = { ProductID: PID, Quantity: Qty, Price: P };


 $("#btnWrite").click(function () {
                    // $.cookie("Name", $("#txtName").val());
                    document.cookie = "Product='+PID+'; expires=Friday, 20 Sep 2019 01:00:00 UTC; path=/ ;";
 document.cookie = "Quantity='+Qty+'; expires=Friday, 20 Sep 2019 01:00:00 UTC; path=/;";
 document.cookie = "Price='+P+'; expires=Friday, 20 Sep 2019 01:00:00 UTC; path=/;";
                });

Я пытаюсь получить массив многомерных объектов и присвоить значения корзины покупок cookie или нескольким cookie.

Также, будучи новичком в javascript, как мне получить значения на стороне клиента.Я знаю, что могу использовать stringify для отправки на сервер

Я пытался инициализировать его, но получаю ошибки

  for (var i = 0; i < 1; i++) {
 data[i] = new { ProductID: PID, Quantity: Qty };
alert(data[i]);
}

1 Ответ

0 голосов
/ 21 сентября 2019

Путь Cookie

Cookie не может хранить пробелы или запятые, и вы можете хранить только одну пару ключ-значение на оператор присваивания.Вы можете отделить каждое значение и назначить его в файл cookie, например:

document.cookie = "Product=+PID+;"
document.cookie = "expires=+DATESTRING+;"
document.cookie = "path=+PATH+;"

Однако, когда вы назначаете другой файл cookie, подобный этому, предыдущие файлы cookie path и expires будут перезаписаны.Лучше всего закодировать все данные в безопасную строку cookie:

document.cookie = "Product=+PID+DATESTRING+PATH+;"

Затем вы можете найти продукт и проанализировать каждый из аргументов, используя .split('+').

Современный путь

Файлы cookie имеют несколько недостатков по сравнению с localStorage.Два наиболее важных факта: (1) файлы cookie в браузере отправляются при каждом запросе http / s (потенциальная утечка личной информации) и (2) файлы cookie имеют ограничение в 4 КБ для хранения данных, localStorage позволяет 5 МБ (значительно больше!).

Чтобы использовать его так, как вы хотели, вы можете сделать что-то вроде этого:

// setting it:
localStorage.setItem('Product', '+PID+DATESTRING+PATH+')
// getting it: 
const productData = localStorage.getItem('Product').split('+')
const productId = productData[0]
const productDate = productData[1]
const productPath = productData[2]

Надеюсь, это поможет!

...