Форум программистов, компьютерный форум, киберфорум
Наши страницы
jQuery
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Egorqa1337
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 25
1

Данные из localstorage(json) заносятся в корзину jQcart некорректно

06.02.2019, 14:31. Просмотров 930. Ответов 2

делаю корзину на сайте через плагин jQcart, столкнулся с проблемой добавления товара через localstorage и json с модального окна.Суть алгоритма добавления такая, есть карточки товаров на странице, при нажатии на кнопку, появляется модальное окно в которое переносятся дата атрибуты из карточки товара, после нажатия на кнопку в модальном окне и выбора доп.параметров, товар попадает в корзину.С первым товаром занесение работает корректно.При занесении другой карточки товара данные добавляются к предыдущему товару, а не указываются в корзине, как уникальный товар. При проверке через google dev tools, как я понимаю объект не обновляется, хотя атрибуты в кнопке изменились и идёт просто сложение с предыдущим товаром.И если же производить добавления товара без модального окна, а просто по клику на карточку товара всё работает отлично(((.Подскажите пожалуйста в чём проблема, уже неделю ломаю голову над этим вопросом.Вот кусочек кода переноса атрибутов из кнопки в кнопку модального окна:

Javascript
1
2
3
4
5
6
7
8
9
var itemDataButton,  totalValueOrder, 
itemDataPopUp = $('.delivery-type__addorder_btn'); 
$('.add-to-cart').click(function (event) { 
event.preventDefault(); 
totalValue = $('#total_value').text($(this).data('price')); 
totalValueOrder = ($(this).data('price')); 
itemDataButton = $(this).data(); 
for ( var key in itemDataButton) { 
itemDataPopUp.attr('data-' + key, itemDataButton[key]); } });
Добавление в корзину

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
addToCart: function(e) {
      e.preventDefault();
      itemData = $(this).data();
            if(typeof itemData.id === 'undefined') {
                console.log('Отсутствует ID товара');
                return false;
            }
      cartData = actions.getStorage() || {};
      if (cartData.hasOwnProperty(itemData.id)) {
        cartData[itemData.id].count++;
      } else {
        itemData.count = 1;
        cartData[itemData.id] = itemData;
      }
      actions.setStorage(cartData);
      actions.changeTotalCnt(1);
      label.show();
            if(opts.openByAdding) {
                actions.openCart();
            }
      return false;
    },
LocalStorage

Javascript
1
2
3
4
5
6
7
setStorage: function(o) {
      localStorage.setItem('jqcart', JSON.stringify(o));
      return false;
    },
    getStorage: function() {
      return JSON.parse(localStorage.getItem('jqcart'));
    }
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2019, 14:31
Ответы с готовыми решениями:

Вытащить c localstorage json jquery
Помогите прочитать по ключу localstorage jsone c помощью jquery ? Имеется код: function...

почему некорректно заносятся данные в массив?
здравствуйте,не могли бы вы подсказать почему некорректно заносятся данные в массив? using...

JSON в localStorage
Имеется файл json, который был получен с помощью var request = new XMLHttpRequest(). Теперь его...

Некорректно обрабатывается событие на чекбоксе после выгрузки из localstorage
Всем здравствуйте. Благодаря подсказке из своего прошлого вопроса научился при нажатии на checkbox...

JSON и БД - заносятся нули в поле таблицы
JSON имеет вид: { total_items: 500, data: ] } Вот так добавляю в БД:

2
pvzh
83 / 53 / 31
Регистрация: 04.12.2018
Сообщений: 141
06.02.2019, 19:37 2
Лучший ответ Сообщение было отмечено Egorqa1337 как решение

Решение

Цитата Сообщение от Egorqa1337 Посмотреть сообщение
данные добавляются к предыдущему товару, а не указываются в корзине, как уникальный товар
Увеличивается число единиц товара что ли?

Такое ощущение, что в модальном окне остаются значения из первого его открытия.
Поверить можно хотя бы через console.log:
Javascript
1
2
3
4
5
addToCart: function(e) {
      e.preventDefault();
      itemData = $(this).data();
      console.log('itemData:', itemData);
. . .
А в модальное окно id товара правильно переносится?
Правильно задавать значения через data:
Javascript
1
2
3
4
for (var key in itemDataButton) {
    // itemDataPopUp.attr('data-' + key, itemDataButton[key]);
    itemDataPopUp.data(key, itemDataButton[key]);
. . .
Можно даже без цикла, закинуть сразу объект:
Javascript
1
itemDataPopUp.data(itemDataButton);
1
Egorqa1337
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 25
06.02.2019, 22:19  [ТС] 3
Получилось, спасибо большое.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2019, 22:19

Не заносятся данные в БД
Здравствуйте! Есть такая проблемка неделю не могу понять почему данные не заносятся в бд, в примере...

Данные не заносятся в БД
<h2 align="center">Оформление заказа</h2> <? if($_SESSION && !isset($_POST)) { ?> ...

Данные в БД (не заносятся)
$query = mysql_query("INSET INTO orders(name, s_name, address, post_index, product, prod_id, price,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru