Shopify AJAX - 更新订单项的总价

Shopify AJAX - update total price of line item

我找到了如何通过购物车页面上的 AJAX 更改您的商品数量,我还找到了如何通过 AJAX 更新购物车总数。

我没有找到的是如何在您增加或减少数量时更新每个订单项的总订单项价格。

这是我到目前为止的代码(无法使用)...

jQuery.getJSON('/cart.js', function(cart) { $('#line-total-{{ item.id }}').html(Shopify.formatMoney(item.line_price).replace('$','£'))})

关于我的代码有什么问题的任何提示?

另外,如果有帮助的话,这是在按钮上的 onclick 中。

您的代码包括:

jQuery.getJSON('/cart.js', function(cart) { 
  $('#line-total-{{ item.id  }}').html(Shopify.formatMoney(item.line_price).replace('$','£'))})

以上内容无效,因为基于液体的 {{ item.id }} 将在页面中放置一次,之后永远不会更改。 (最有可能的是,上面的代码包含在范围内没有名为 item 的 Liquid 变量的地方,因此呈现的 Javascript 会简单地读取 $('#line-total-')

您需要使用提供给函数的 Javascript cart 对象。例如:

jQuery.getJSON('/cart.js', function(cart) { 
  for(var i=0; i<cart.items.length; i++){
    var item = cart.items[i];
    var price_element = $('#line-total-' + item.id)
    price_element.html(Shopify.formatMoney(item.line_price).replace('$','£'))})
  }
})

希望对您有所帮助!

您正在从 /cart.js 返回 "cart",但您没有读取它的任何数据。

您需要通读 javascript 中的购物车对象(将表示为 shopify "Cart" object)。我看到您正在尝试获取 "item.id" 和 "item.line_price",但与商品和购物车对象没有关系。您此时也不能使用液体,因为它已经呈现给客户端...

您可能需要执行类似以下操作:

jQuery.getJSON('/cart.js', function(cart) { cart.items.each($('#line-total-'+this.id).html(Shopify.formatMoney(this.line_price).replace('$','£')););});