简体   繁体   English

如何在 update.js shopify 中使用动态变量

[英]how to use dynamic variable in update.js shopify

I want yo use test variable in update.js but it shows error when I use as variable but when I pass this value directly it works can someone please tell me how can use dynamic variable to change quantity of existing products in cart我希望你在 update.js 中使用测试变量,但是当我用作变量时它显示错误但是当我直接传递这个值时它可以工作有人可以告诉我如何使用动态变量来改变购物车中现有产品的数量

I have updated my code It will allow user to add only 5 items more than 5 items will be removed It will create string which will look like this 32082238341235:0,39470423048307:0,32164693278835:0,32164693835891:1我已经更新了我的代码它将只允许用户添加 5 个项目超过 5 个项目将被删除它将创建如下所示的字符串 32082238341235:0,39470423048307:0,32164693278835:0,32164693835891:1

and finally the all IDs and qunatity will be updated by update.js最后所有的 ID 和数量将由 update.js 更新

I have got error in last step its shows {"status":404,"message":"Cart Error","description":"Cannot find variant"}我在最后一步出现错误,它显示 {"status":404,"message":"Cart Error","description":"Cannot find variant"}

when i try to update all products当我尝试更新所有产品时

 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>

You need to store test as an object within parentheses {} and then pass to updates by using the spread ... operator.您需要将test作为 object 存储在括号{}中,然后使用 spread ...运算符传递给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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM