Добавление кнопок плюс / минус в корзину и обновление по запросу AJAX - PullRequest
0 голосов
/ 10 мая 2019

Добавлены в корзину кнопки плюс / минус для изменения количества товара в корзине.Но я не могу понять, как правильно подключить Ajax для обновлений.

Я пробовал разные значения в данных Ajax.

<button  type="button" class="minus">-</button>
<input type="text" name="quantity[{{ product.cart_id }}]" value="{{ product.quantity }}" size="1" class="form-control cart-q" id="score"/>
<script>
$('.minus').click(function () {
     var $input = $(this).parent().find('#score');
     var count = parseInt($input.val()) - 1;
     count = count < 1 ? 1 : count;
     $input.val(count);
     $input.change();
     return false;
     setTimeout(function () {
      $.ajax({
        type: 'post',
        url: 'index.php?route=checkout/cart/edit',
        data: 'key=' + $input.name() + '&quantity=' + $input.val(),
        dataType: 'json',
        success: function () {
          $('#cart > ul').load('index.php?route=common/cart/info ul li');
        }
      });
    }, 100);
</script>

Входное значение изменилось, но значение корзины не обновилось, и нет ошибки в консоли.Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Отправка данных в формате JSON. Также удалите return перед вызовом AJAX

<script>
  $('.minus').click(function(e) {
        e.preventDefault();
        var $input = $(this).parent().find('#score');
        var count = parseInt($input.val()) - 1;
        count = count < 1 ? 1 : count;
        $input.val(count);
        $input.change();
        setTimeout(function() {
          $.ajax({
            type: 'post',
            url: 'index.php?route=checkout/cart/edit',
            data: {
              key: $input.name(),
              quantity: $input.val()
            },
            dataType: 'json',
            success: function() {
              $('#cart > ul').load('index.php?route=common/cart/info ul li');
            }
          });
        }, 100);
</script>
0 голосов
/ 10 мая 2019

Корзина не обновляется, так как перед вызовом ajax у вас есть оператор возврата.

удален оператор возврата, также нет необходимости в тайм-ауте.

$('.minus').click(function () {
     var $input = $(this).parent().find('#score');
     var count = parseInt($input.val()) - 1;
     count = count < 1 ? 1 : count;
     $input.val(count);
     $input.change();
      $.ajax({
        type: 'post',
        url: 'index.php?route=checkout/cart/edit',
        data: 'key=' + $input.name() + '&quantity=' + $input.val(),
        dataType: 'json',
        success: function () {
          $('#cart > ul').load('index.php?route=common/cart/info ul li');
        }
      });
    });
...