1

我在 Shopify 中遇到问题。

我想使用 ajax 更新按钮单击时的购物车数量,但它会给出类似的错误

{“状态”:404,“消息”:“购物车错误”,“描述”:“找不到变体”}

这是我的ajax代码,

 $('.adjust-plus').click(function(){
    var qty = $(this).parent('.button-wrapper').siblings('.input-wrapper').children('.quantity').val();
    var varient = $(this).parent('.button-wrapper').siblings('.input-wrapper').children('.quantity').attr('data-id');

    jQuery.ajax({
      type: 'POST',
      async: false,
      url: '/cart/update.js',
      data: { updates: { varient : qty } },
      dataType: 'json',
      success: function() { location.href = '/cart'; }
   });
 });

目前在这两个变量值中都没有任何值错误。

但是当 id 添加如下代码时:

$('.adjust-plus').click(function(){
    var qty = $(this).parent('.button-wrapper').siblings('.input-wrapper').children('.quantity').val();
    var varient = $(this).parent('.button-wrapper').siblings('.input-wrapper').children('.quantity').attr('data-id');

    jQuery.ajax({
      type: 'POST',
      async: false,
      url: '/cart/update.js',
      data: { updates: { 15082896588867 : 2 } },
      dataType: 'json',
      success: function() { location.href = '/cart'; }
   });
 });

然后购物车更新成功。

4

1 回答 1

4

首先,删除,因为这是非常糟糕的做法,并且在您正确使用回调时async: false不需要在这里。success

问题本身是因为您不能使用您正在使用的语法将变量用作对象的键。为了解决这个问题,您可以使用括号表示法,如下所示:

$('.adjust-plus').click(function() {
  var $quantity = $(this).parent('.button-wrapper').siblings('.input-wrapper').children('.quantity');
  var qty = $quantity.val();
  var varient = $quantity.data('id');

  var data = { updates: {} };
  data.updates[varient] = qty;

  jQuery.ajax({
    type: 'POST',
    url: '/cart/update.js',
    data: data,
    dataType: 'json',
    success: function() { 
      location.href = '/cart'; 
    }
  });
});
于 2018-11-29T13:57:36.170 回答