【发布时间】:2016-05-02 12:47:10
【问题描述】:
抱歉,如果这是其他地方,但我找不到更好的方法。
我想在添加、删除或更改数量时使用 AJAX 实时更新购物车总数。
我有它的工作,但必须有更好的方法。不断轮询更改感觉是错误的,我当然不希望以内存泄漏告终。
现在我从 JSON 中获取项目计数,然后通过每秒轮询来更改 div 中的数字,让用户产生在更改某些内容时数字正在更新的错觉。
我尝试向添加到购物车按钮添加一个监听器(有效)以及在数量选择器上监听(无效)。
我确定我只是一个菜鸟,因此感谢您提供任何帮助。代码如下:
// Fetch the cart in JSON and change cart quantity on the fly after first product added to cart
function doPoll(){
setTimeout(function() {
$.getJSON('/cart.js', function(cart) {
$('.cart-count').html(cart.item_count);
doPoll();
}, 1000);
}
更新
所以修复实际上非常简单。我无法在购物车中的特定元素上附加侦听器的原因是尚未通过 ajax 加载购物车(呃!)
所以我所做的只是删除了不断的轮询,而是在页面上的 ajax 完全加载时运行我的函数:
$( document ).ajaxComplete(function() {
//Do stuff here
});
【问题讨论】:
-
在您的
scripts.js文件中检查三个功能 - 购物车/添加、购物车/更新、购物车//删除并分享您的发现。 -
对不起 HymnZ 你能澄清一下吗?
-
在您的 Shopify 主题部分中,将有一个 scrips.js.liquid 文件,这是一个主题默认值。在那里,您将拥有一组与购物车相关的特定功能。如果您可以分享它们,就会更容易提供帮助。
-
应该澄清一下 - 我正在使用基于 Timber (github.com/Shopify/Timber) 的自定义主题。与购物车相关的 AJAX 函数在这里:github.com/Shopify/Timber/blob/master/assets/… 但我在函数中引用的是使用 API 调用 /cart.js - docs.shopify.com/themes/development/getting-started/…
标签: javascript jquery json ajax shopify