首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Shopify add to cart函数一次只能工作一个,而不是在循环中工作。

Shopify add to cart函数一次只能工作一个,而不是在循环中工作。
EN

Stack Overflow用户
提问于 2020-04-19 15:25:03
回答 2查看 699关注 0票数 1

我正在创建一种将Shopify集合中的所有产品添加到购物车中的方法,作为销售捆绑包的一种方式。

我有一个JavaScript脚本,它确定选择了哪个级别的工具包,并循环遍历集合中的每个产品。我们希望在包中添加几个产品不止一次,这些产品由标记basicbundleqty:x控制,因此代码循环遍历每个产品的标记,检查这个标签,如果它有,则qty设置为标记的后缀。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script> 

var selected = "not selected";

function kitSelect(){
  selected = document.getElementById('select').value;
  /*if(selected == "not selected"){
    alert('Please select a kit level');
  }
  if(selected == "basic"){
    alert('basic');
  }
  if(selected == "standard"){
    alert('standard');
  }
  if(selected == "pro"){
    alert('pro');
  }*/
} 

function addBundle(){
  var qty = 0;
  if(selected == "basic"){
    {% for kitproduct in collections['Basic-Fixture-Plate-Starter-Kit'].products %}
        qty = 1;
        {% for t in kitproduct.tags %}
            {% if t contains 'basicqty:' %}
                {% assign qty = t | remove: 'basicqty:'%}
                {% assign qty = qty | plus: 0 %}
                qty = {{ qty | json }};
            {% endif %}
        {% endfor %}
        jQuery.post('/cart/add.js', {
          quantity: qty,
         id: {{ kitproduct.variants[0].id }},
        properties: {
        }
      });
    alert(qty);
    {% endfor %}
  } else {
    alert("Please select a kit level first");
  }
  window.location.reload(false);
}
</script>

这种方法确实有效,只有一种奇怪之处。如果没有for循环末尾的alert(qty);行,代码就无法工作。如果不存在该警报,代码似乎只会随机添加一到两个集合产品。

为什么这只适用于alert()函数,并且是否有一个修复方法可以通过一次单击将它们全部添加到购物车中,而不需要用户通过每个警报窗口单击?

EN

回答 2

Stack Overflow用户

发布于 2020-04-19 15:33:32

问题在于您发送的异步请求。

带有警报的循环可以工作,因为每次警报出现时脚本都会停止。同时,异步请求将被处理。

Shopify明确建议不要使用并行添加产品的模式,因为您可以阅读这里

如果您想同时添加多个产品,可以使用一个请求添加它们,如shopify文档中所述:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jQuery.post('/cart/add.js', {
  items: [
    {
      quantity: 1,
      id: 794864229,
      properties: {
        'First name': 'Caroline'
      }
    },
    {
      quantity: 2,
      id: 826203268,
      properties: {
        'First name': 'Mike'
      }
    }
  ]
});
票数 1
EN

Stack Overflow用户

发布于 2020-04-19 16:03:45

这是解决办法。正如弗里德所指出的,与其为集合中的每个产品创建一个请求,我还需要创建一个请求并循环遍历请求中的每个产品。下面是工作函数(减去数量检查,我需要添加它):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  function addBundle2(){
    jQuery.post('/cart/add.js', {
      items: [
        {% for kitproduct in collections['Pallets'].products %}
        {
          quantity: 1,
          id: {{ kitproduct.variants[0].id }},
          properties: {
          }
        },
        {% endfor %}
      ]
    });
    window.location.reload(false);
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61312960

复制
相关文章
和智能机器一起工作,而不是惧怕它们
如果我们想利用科技,就必须直面恐惧。 ——加里·卡斯帕罗夫 卡斯帕罗夫 生于1963年 前苏联、俄罗斯国际象棋棋手 22岁成为世界上最年轻的国际象棋冠军 接下来的职业生涯里 他获得了一连串冠军头衔 直到2005年退役 但是 幸运也是不幸 让他真正“家喻户晓”的 是历史课本里 1997年5月11日 他作为人类的代表 与IBM计算机“深蓝”的一次对弈 那一次 人类输了 此后的20年 人类好像一直在输 到了2017年 IBM已经有了能赢取智力竞赛节目的Watson 而距离谷歌用AlphaGo震惊世界 也已
企鹅号小编
2018/01/16
7260
和智能机器一起工作,而不是惧怕它们
await 只在 async 函数中工作
关于 promise 的一种更优雅的写法 async/await 中,await 只会出现在 async 函数中,我们使用 async/await 时,几乎不需要 .then,因为 await 为我们处理等待;但是在代码的顶层,当我们在 async 函数的外部时,我们在语法上是不能使用 await 的,所以通常添加 .then/catch 去处理最终结果或者 error。
前端开发博客
2020/11/04
1.5K0
await 只在 async 函数中工作
你会为“兴趣”而工作吗?
在橘长的私域群看到了一篇关于兴趣为导向的文章,很有启发。今天讲讲你会为“兴趣”工作吗?
程序媛淼淼
2022/09/01
2470
记一次在工作组的渗透
https://blog.csdn.net/qq_36119192/article/details/84562454
HACK学习
2019/08/06
1.4K0
记一次在工作组的渗透
从一个工作到一个工作
简单到,公司可以比较容易的解除雇佣关系,当然个人也可以比较随意的和公司解除雇佣关系。
HoneyMoose
2021/05/12
4210
从一个工作到一个工作
项目成员为什么觉得项目的工作不是他的工作 ?
首先根本原因是人家不会永远是项目的人,项目的临时性,这点没办法改变。所以没有归属感,也没办法改变。
PM吃瓜
2023/03/02
4990
项目成员为什么觉得项目的工作不是他的工作 ?
For循环中,只能`i++`或者`++i`吗?
总之,不管出不出现错误提示,你写成i+1或者是sum+1毫无用处,也不会起到任何作用,它不能代替i++,或者sum++。
JanYork_简昀
2022/05/23
6360
For循环中,只能`i++`或者`++i`吗?
哈希函数如何工作 ?
作为一名程序员,您每天都会使用哈希函数。它们在数据库中用于优化查询,在数据结构中用于使速度更快,在安全性中用于保证数据安全。几乎每次与技术的交互都会以某种方式涉及哈希函数。
数据科学工厂
2023/08/10
2740
哈希函数如何工作 ?
JS实现只能调用一次的函数
毋庸置疑,它会打印出三个Hello world。这篇文章就是来看看通过哪个方式能让他只打印一个。
kifuan
2022/10/24
2.3K0
Excel VBA在一个工作簿内把总表拆分多个工作表
Dim title_rng As Range, wb As Object, dic1 As Object
哆哆Excel
2022/10/25
2.5K0
又一程序员在工作岗位上倒下,幸好不是一个在加班!
8月25日下午,深圳红孩儿信息技术有限公司的程序员程某倒在了自己的岗位上。据同事反应,他当天的脸色不是很好,当时正在写代码,起身倒水时晕倒在地不省人事。幸好队友都在赶紧送往医院,已经脱离了危险。 相信
IT架构圈
2018/09/28
5140
机器学习不是要取代工作,而是重新设计工作
围绕人工智能和自动化的争论似乎一直都是悲观主义者占主导,他们担心机器人会取代所有的工作,而乐观主义者则不以为然。但麻省理工学院Sloan教授Erik Brynjolfsson和他的同事们表示,争论需要不同的观点。
机器人网
2018/07/23
2750
机器学习不是要取代工作,而是重新设计工作
未来最赚钱的工作不是AI,这项工作永远无法被替代
1 故事从三波人工智能热潮开始 2017年,无人不谈人工智能。 可哪怕早就经历两次人工智能热潮,李开复和所有人一样,都没有料想到今天。 即使,1980年,他已经在哥伦比亚大学,和同学们一起研制出了会模仿老师口头禅的“专家系统”型程序,那代表着第一波人工智能热潮; 即使,1993年,在卡内基梅隆大学,当他对专家系统再提出质疑,打算用机器学习取而代之做研究,成功说服了导师给予各方面的支持; 即使,最后他的作品成为了第二波人工智能的经典作品。他用4000句话的训练,研制出了的不指定语者的语音识别,以96%的识
BestSDK
2018/03/02
9920
未来最赚钱的工作不是AI,这项工作永远无法被替代
IF函数——放松工作,享受生活!
今天跟大家分享一个简单却实用、高效的逻辑函数——IF函数。 ▼ IF函数可以简化很多我们数据处理过程中的重复性操作工作,让我们的工作效率大大提高。今天通过两个例子来跟大家分享if函数的简单用法。 第一
数据小磨坊
2018/04/10
6850
IF函数——放松工作,享受生活!
在Android中使用枚举注解而不是枚举
很多开发规范都是不建议在Android中使用枚举的,在Android系统中使用枚举的开销是使用常量的2倍。一般地,在一个文件中定义常量
阳仔
2019/07/31
1.4K0
在Android中使用枚举注解而不是枚举
程序员,你为何而工作为什么而工作把自己当成一个企业别矫情,无效的努力没毛线用小结
为什么而工作 "你为什么而工作?“ "这不废话吗?我不工作你养我啊?工作就是为了赚钱养家,要不是出于经济压力,我才懒得工作”? 谈起工作的价值这个话题,很多人都会觉得很无聊。 工作,无非就是用自己的时
章鱼喵
2018/06/08
5510
[脑书笔记]《你为什么而工作》:请尊重你自己
核心内容:我们为什么要工作?我们为什么要放弃既快乐又刺激的安逸生活,每天早晨睡眼惺忪地从舒适的床上挣扎而起?多么愚蠢的问题啊。我们工作当然是因为我们要养家糊口。确实如此,但仅此而已吗?当然不是!巴里•施瓦茨发现两个多世纪以来,我们完全被亚当•斯密等经济学大师的观点误导了,无论是社会,还是个体的人,我们一直被灌输着关于工作的一些错误观点。
rocket
2018/09/14
5600
[脑书笔记]《你为什么而工作》:请尊重你自己
开始在ubuntu下工作
家里的PC机有几个月没用了,昨天刚开机,发现SSD识别不了,经过排查,确定是盘坏了,然后只能重装
lestat
2018/10/08
1.1K0
面试官:为什么data属性是一个函数而不是一个对象?
在我们定义好一个组件的时候,vue最终都会通过Vue.extend()构成组件实例
@超人
2021/02/26
3.2K0
面试官:为什么data属性是一个函数而不是一个对象?
DevOps是一个接口,而不是一个类
职位通常定义一个人需要执行的任务。“软件开发人员”开发软件,“系统管理员”管理系统,“团队负责人”领导团队。他们执行任务的质量可以用来评估他们的绩效。
DevOps云学堂
2021/05/11
1.1K0
DevOps是一个接口,而不是一个类

相似问题

woocommerce_quantity_input在add to cart循环中不工作

12

React Firebase Cart Add Items Cart Reducer不工作

120

脉冲刷新只能工作一次,而不是多次。

26

GObject.add_emission_hook只能工作一次

10

如何使add to cart按钮正确工作

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文