【问题标题】:Uncaught TypeError: Cannot read property 'length' of undefined in jQuery $.each and JSON未捕获的类型错误:无法读取 jQuery $.each 和 JSON 中未定义的属性“长度”
【发布时间】:2019-08-02 23:22:59
【问题描述】:

我正在尝试获取一个名为数量的属性的值,该属性包含在名为 items 的 JSON 数组中,但我在 jQuery 开始时不断收到“未捕获的类型错误:无法读取未定义的属性‘长度’” .each() 循环。有人可以解释我哪里出错了。非常感谢!

JSON -

{"items":[    
    {"id":"12345", "quantity":"2",},    
    {"id":"54321", "quantity":"3",}  

]}

AJAX -

$(":input").bind('keyup mouseup', function () {
      var self = this;
      $.ajax({
      url: "https://example.com/cart/change.json",
      dataType: "jsonp",
      data: {
      id: $(this).attr('id'),
      quantity : $(this).val()
  },
//JSON response
      success: function(data) {
      console.log(data); //formatted JSON data
      $('#subtotal').html(data.items_subtotal_price); //set subtotal from JSON
      console.log($(self).attr('id')); //item id of clicked input

      $.each(data.items.quantity, function(key,val){
      console.log(key + '-' + val)
          }

)}
});
});

【问题讨论】:

  • data.items 是一个数组。 data.items.quantity 不是有效的访问器。您必须遍历项目
  • 我看不出哪里出错了,谢谢 Taplar!
  • @BobtheBuilder 喜欢 Taplar 说数量不是有效的访问者检查 William Gunawan 回答以访问您的数量项目
  • 是的,Williams 的解决方案很到位,谢谢!

标签: javascript jquery ajax


【解决方案1】:

你错了。

      $.each(data.items.quantity, function(key,val){
  console.log(key + '-' + val)
      });

上面的代码你试图指向 data.items.quantity 这意味着 data.items 是一个数组而不是对象。访问每个里面的数量。

应该是这样的

$.each(data.items, function(index, item){
  console.log(item.quantity);
});

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 2013-11-24
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多