sessionStorage хранит все внутри одного массива - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть этот кусок JS:

$('.go-to-bag').click(function () {
var productId = $(this).parent().attr('id');
var productName = $(this).parent().attr('product-name');
var productQty = $(this).prev().val();
var productLWeight = $(this).parent().attr('product-weight');
var productPrice = $(this).parent().attr('product-price');

    var newList = new Object(); 

    if(sessionStorage.newShoppingList) 
    {
        newShoppingList = JSON.parse(sessionStorage.getItem('newShoppingList'));
    } else {
        newShoppingList = []
    }

    newShoppingList.push(productId, productName, productQty, productPrice, productLWeight);

    sessionStorage.setItem('newShoppingList', JSON.stringify(newShoppingList));

    var retrievedObject = sessionStorage.getItem('newShoppingList'); 
    console.log('retrievedObject: ', JSON.parse(retrievedObject));

});

Предполагается добавить элементы к объекту в sessionStorage, например так: enter image description here Вместо этого он дает это: enter image description here

Он работал просто отлично, и знаю, что это не работает. Единственное отличие состоит в том, что мой коллега реализовывал языковую функцию в php для основного файла.

У кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 03 ноября 2018

Вы вызываете функцию Array.prototype.push, передавая 5 параметров, которые будут вставлены отдельно в этот массив.

Array.prototype.push

enter image description here

Вам нужно обернуть его фигурными скобками

                     v
newShoppingList.push({
     productId,
     productName,
     productQty,
     productPrice,
     productLWeight
});
^

Приведенный выше код добавит объект следующим образом:

{
  "productId": 29,
  "productName": "Chocolote negro",
  "productQty": 1,
  "productPrice": "0.0",
  "productLWeight": "0.00"
}
...