Функция добавления в корзину с идентификаторами продуктов

#javascript #php #ajax #e-commerce #opencart

#javascript #php #ajax #электронная коммерция #opencart

Вопрос:

Я создал пользовательский конструктор продуктов для своего сайта и застрял на самом последнем шаге — добавлении товаров в корзину.

итак, в моем пользовательском файле шаблона этот код запускается при нажатии кнопки «Добавить в корзину»:

 $('#button-cart').bind('click', function() {
    $.ajax({
    url: 'index.php?route=checkout/cart/add',
    type: 'post',
    data: $('I WANT TO PUT PRODUCT ID HERE, BUT DOESNT WORK'),
    dataType: 'json',
    success: function(json) {

    }
});
  

У меня есть идентификатор продукта, сохраненный как переменная javascript, мне просто нужно получить его, чтобы добавить этот продукт в корзину. Любая помощь была бы отличной. Спасибо.

_____________ РЕДАКТИРОВАТЬ ______________

Это мой самый последний код, функция определенно запускается, когда я нажимаю кнопку «Добавить в корзину», locketID — это просто идентификатор продукта. Вызывается функция успеха, но ни один из операторов if (ошибка или успех) не выполняется, и продукт не добавляется в корзину.

Стоит ли упоминать, что это происходит в файле шаблона категории? Есть ли что-нибудь, что нужно включить, чего может не быть?

 $('#button-cart').bind('click', function() {
    $.ajax({
        url: 'index.php?route=checkout/cart/add',
        type: 'post',
        data: locketID,
        dataType: 'json',
        success: function(json) {

            console.log('success function called')

            if (json['error']) {
                console.log('ERROR');
            } 

            if (json['success']) {
                console.log('SUCCESS');
            }


        }
    });
});
  

___________ПРАВИТЬ__________

Итак, я выбрал немного другой подход, это то, что у меня есть при вызове кнопки «Добавить в корзину», но она перенаправляет на страницу товара, а не добавляет товар в корзину, есть идеи?

 $('#button-cart-custom').bind('click', function() {

    var quantity = 1;
    var product_id = 12196;

    $.ajax({
        url: 'index.php?route=checkout/cart/add',
        type: 'post',
        data: 'product_id='   product_id   'amp;quantity='   quantity,
        dataType: 'json',
        success: function(json) {
            $('.success, .warning, .attention, .information, .error').remove();

            if (json['redirect']) {
                location = json['redirect'];
            }

            if (json['success']) {
                $('#notification').html('<div class="success" style="display: none;">'   json['success']   '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');

                $('.success').fadeIn('slow');

                $('#cart-total').html(json['total']);

                $('html, body').animate({ scrollTop: 0 }, 'slow'); 
            }   
        }
    });


});
  

Комментарии:

1. Можете ли вы указать ту часть, где вы говорите «НО НЕ РАБОТАЕТ»?

2. Я хочу указать идентификатор продуктов, которые я хочу добавить в корзину, здесь

Ответ №1:

Это очень просто

 var vars = new Array();

vars = {var1: var1_value,var2: var2_value}
  

теперь замените в своем коде

data: $('I WANT TO PUT PRODUCT ID HERE, BUT DOESNT WORK'), с data: vars;

Комментарии:

1. Эй, спасибо за ваш ответ, я думал, что что-то подобное сработает, но я ничего не добился с этим. Я обновил приведенный выше вопрос своим последним кодом и объяснением. Еще раз спасибо

2. замените data: locketID на data:{‘id’:locketID} и используйте $_POST[‘id’] для получения этих данных

3. извините, куда я помещаю $_POST[‘id’]

4. его можно использовать на index.php страницу, чтобы вы могли получить этот идентификатор

5. Я ценю вашу помощь… просто не вижу, куда добавить $_POST[‘id’]

Ответ №2:

заменить data: locketID на

 data:{'id':locketID}  
  

и
используйте

$_POST['id'] чтобы получить эти данные на сервере

Комментарии:

1. также удалите тип данных: ‘json’, в вашем коде в этом нет необходимости