Обновите и удалить данные JSON из файла cookie, содержащие товары корзины покупок
-
23-12-2019 - |
Вопрос
Я храним товар корзины (данные JSON) в cookie через jQuery. Я могу добавить элементы в печенье.Ниже приведен код JavaScript.
$.cookie.json = true;
// empty cart
var emptydata = { "cartItems": [] };
var devicedata = new function (deviceId, qty) {
return { "deviceId": deviceId, "quantity": qty };
}
// to create json data
function createJSON(id, qty) {
if (!$.cookie('devicelist')) {
$.cookie('devicelist', emptydata);
}
devicedata.deviceId = id;
devicedata.quantity = qty;
cart = $.cookie('devicelist');
cart.cartItems.push(devicedata);
return cart;
}
// function to be called , when Add to cart button is clicked
function saveItems() {
var deviceId = $('#lbldeviceId').html();
var Qty = $('#txtQty').val();
var jsondata = createJSON(deviceId, Qty);
$.cookie('devicelist', jsondata);
}
.
Пример данных JSON
{ "cartItems": [
{
"deviceId": "1",
"quantity": "1"
},
{
"deviceId": "2",
"quantity": "1"
}
]}
.
Как я могу обновить количество существующего устройства и удалить существующее устройство в cookie? Надеюсь, это может быть сделано путем циркета по предметам.Если есть какие-либо другие альтернативы, пожалуйста, предложите мне.Также мой подход хорош или я должен пойти на какой-то другой подход?
Решение
Ваш подход, кажется, прав ...
Для обновления и удаления элементов в корзине вы можете использовать этот код:
function modifyItem(deviceId, Qty)
{
var cart_items = $.cookie('devicelist').cartItems;
$(cart_items).each( function(i, v) {
if (v && v.deviceId == deviceId) {
cart_items[i].quantity = Qty;
}
});
var obj = { "cartItems": cart_items };
$.cookie('devicelist', obj);
}
function deleteItem(deviceId)
{
var cart_items = $.cookie('devicelist').cartItems;
$(cart_items).each( function(i, v) {
if (v && v.deviceId == deviceId) {
cart_items.splice(i, 1);
}
});
var obj = { "cartItems": cart_items };
$.cookie('devicelist', obj);
}
.
Пример того, как позвонить им:
<a href="javascript:void(0);" onClick="javascript:modifyItem(3, 5);">Modify deviceId 3</a>
<a href="javascript:void(0);" onClick="javascript:deleteItem(4);">Delete deviceId 4</a>
.
Редактировать:
в соответствии с запросом OP в комментарии, я изменил вышеуказанные функции:
function modifyItem(deviceId, Qty)
{
cart = $.cookie('devicelist');
$(cart.cartItems).each( function(i, v) {
if (v && v.deviceId == deviceId) {
v.quantity = Qty;
$.cookie('devicelist', cart);
}
});
}
function deleteItem(deviceId)
{
cart = $.cookie('devicelist');
$(cart.cartItems).each( function(i, v) {
if (v && v.deviceId == deviceId) {
cart.cartItems.splice(i, 1);
$.cookie('devicelist', cart);
}
});
}
. Не связан с StackOverflow