【问题标题】:Uncaught TypeError: Object #<Object> has no method 'push' when adding to JSON in localStorage未捕获的类型错误:在 localStorage 中添加到 JSON 时,对象 #<Object> 没有方法“推送”
【发布时间】:2014-03-29 12:28:46
【问题描述】:

我正在尝试创建一个以 JSON 格式存储在 localStorage 中的简单购物车,但在提交表单以将商品添加到购物车时出现此错误。

Uncaught TypeError: Object # has no method 'push' cart.js:11

这是我的脚本。

var cart = {"cart": {"tuote":{"id":"2", "count": "4"}}};

localStorage.setItem('cart',JSON.stringify(cart));

var localCart = JSON.parse(localStorage.getItem('cart'));
console.log(localCart.cart.tuote.id);

$("#addToCart").on("submit",function(e){
    e.preventDefault();

    var update = localCart.cart.push(
        {"tuote":{"id":"2", "count": "4"}}
    );

    localStorage.setItem('cart',JSON.stringify(update));

    var uusiKori = JSON.parse(localStorage.getItem('cart'));

    for(var i=0; i < uusiKori.cart.length; i++){
        console.log(uusiKori.cart.tuote.id);
    }
});

因此,它会在 localStorage 中添加一个名为 cart 且值为 {"cart":{"tuote":{"id":"2","count":"4"}}} 的条目,并在控制台中记录 id

但如果我尝试将商品添加到购物车,则什么也没有发生。

我做错了什么?

A fiddle.

【问题讨论】:

    标签: javascript jquery json


    【解决方案1】:
    var cart = {"cart": {"tuote":{"id":"2", "count": "4"}}};
    

    cart 不是数组而是对象。您可以像下面这样更改您的基本 JSON

    var cart = {"cart": [{"tuote":{"id":"2", "count": "4"}}]};
    

    【讨论】:

      【解决方案2】:

      你不能压入一个对象,而是压入一个数组。

      您可能希望将购物车结构更改为如下所示:

      var cart = {"cart": [ {"tuote":{"id":"2", "count": "4"}} ] };
      

      然后,要添加到此购物车,您可以:

      cart.cart.push(newStuff);
      

      (当然,你是从localStorage取你的购物车,但原理是一样的)

      【讨论】:

      • 它仍然是有效的 JSON 吗?
      • 是的。数组很好。
      猜你喜欢
      • 2014-01-08
      • 2013-04-19
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多