我希望你在 update.js 中使用测验变量但是当我用作变量时它显示错误但是当我直接传递这个值时它可以作业有人可以告诉我如何使用动态变量来改变购物车中现有产品的数量
我已经更新了我的代码它将允许用户仅添加 5 个项目,超过 5 个项目将被洗掉它将创建如下所示的字符串 32082238341235:0,39470423048307:0,32164693278835:0,321646938315891
最后所有的 ID 和数量将由 update.js 更新
我在最后一步出现错误显示 {"status":404,"message":"Cart Error","description":"Cannot find variant"}
当我尝试更新所有产品时
jQuery.getJSON('/cart.js', function(cart) {
  var items_new = cart.items;
  var count = 0;
  count = cart.item_count;
  var item_to_remove = count - 5;
  if (count > 5) {
    var item_to_remove = count - 5;
    var combine = ""
    if (item_to_remove > 0) {
      for (var i = 0; i < items_new.length; i  ) {
        if (count > 5) {
          var c_id = items_new[i].variant_id;
          var c_quantity = items_new[i].quantity;
          if (c_quantity >= item_to_remove) {
            var q = c_quantity - item_to_remove
            var data_multiple = c_id   ":"   q   ",";
            debugger;
            count = count - item_to_remove;
            console.log(data_multiple);
            var combine = combine   data_multiple;
          } else {
            var data_single = c_id   ":"   0   ",";
            count = count - c_quantity;
            item_to_remove = item_to_remove - c_quantity
            console.log(data_single)
            var combine = combine   data_single;
          }
        }
      }
      console.log(combine.slice(0, -1));
      var test = combine.slice(0, -1);
      console.log({
        updates: {
          test
        }
      });
      jQuery.post('/cart/update.js', {
        updates: {
          test
        }
      });
    }
    t._rerenderCart()
  }
  t.sidebarDrawer.open()
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>uj5u.com热心网友回复:
您需要test在括号内存盘为物件{},然后updates使用扩展...运算子传递给。
var test = {39470423048307 : 0, 32164693278835 : 0, 32164693835891 : 1};
console.log({updates: {...test}});
jQuery.post('/cart/update.js', {updates:{...test}});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>在更新后的代码中,您将字符串传递给updates而不是物件。您应该从 for 回圈内的资料创建一个物件并将该物件传递给updates. 请参阅以下行// CHANGE HERE:
...
var combine = {};
if (item_to_remove > 0) {
  for (var i = 0; i < items_new.length; i  ) {
    if (count > 5) {
      var c_id = items_new[i].variant_id;
      var c_quantity = items_new[i].quantity;
      if (c_quantity >= item_to_remove) {
        var q = c_quantity - item_to_remove;
        
        // CHANGE HERE
        combine[c_id] = q;
        
        count = count - item_to_remove;
      } else {
        // CHANGE HERE
        combine[c_id] = 0;
        count = count - c_quantity;
        item_to_remove = item_to_remove - c_quantity;
      }
      console.log(combine);
    }
  }
  // CHANGE HERE
  var test = combine;
  console.log({
    updates: test
  });
  jQuery.post('/cart/update.js', {
    updates: test
  });
...

 
							 
										
										 
										
										 
										
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										 
										
										
0 评论