使用AJAX更新Shopify中的购物车编号

时间:2016-05-02 12:47:11

标签: javascript jquery json ajax shopify

如果这是其他地方的道歉,但我无法找到更好的方法。

我想在添加,删除产品或更改数量时随时使用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
});

2 个答案:

答案 0 :(得分:1)

实际上它更简单。如果ajax驱动的推车调整发生Timber给你一个可覆盖的钩子。只需覆盖ShopifyAPI.onCartUpdate

即可

e.g。

ShopifyAPI.onCartUpdate = function(cart){
    //do something new with the cart contents
    $('.cart-count').html(cart.item_count);
};

除了您的购物车数量也可通过液体在页面加载时使用,因此如果您将两者合并在一起,您将被覆盖:

<div class="cart-count">{{ cart.item_count }}</div>

答案 1 :(得分:0)

如果您尚未实施任何其他方式添加到购物车,则非常简单。

如果查看您提到的AJAX函数文件,尤其是第101行和第113行的函数,您可以看到这些函数与购物车更新有关。在$('.cart-count').html(cart.item_count);之前添加您的代码callback(cart);,您就可以了。