данные корзины не обновляются в магазине при помощи ajax - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть проблема в Shopify.

Я хочу обновить количество корзин при нажатии кнопки, используя ajax, но это выдаст ошибку вроде

{"status": 404, "message":" Ошибка корзины "," описание ":" Невозможно найти вариант "}

Вот мой код 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'; }
   });
 });

, тогда корзина успешно обновляется.

1 Ответ

0 голосов
/ 29 ноября 2018

Во-первых, удалите 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'; 
    }
  });
});

Есть несколько странных вещей

...