2017-02-01 13 views
2

В настоящее время я работаю над комбинированным предложением на NopCommerce. Поэтому мне нужно добавить несколько продуктов в корзину одним щелчком мыши. Встроенный в NopCommerce формат для добавления одного продукта в корзину являетсяНесколько продуктов добавить в корзину на одном нажатии кнопки - NopCommerce

AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/' + productId + '/1/1' 

и

AjaxCart.addproducttocart_details('/addproducttocart/details/' +productId + '/1', '#product-details-form') 

Оба они прекрасно работают для добавления одного продукта. Но когда я хочу добавить несколько продуктов, он просто добавит в корзину один продукт. Упомяните, что я отправляю строку с разделительным значением комы, которое является списком продуктов, а внутри Javascript он анализируется как один идентификатор prodcut. Однако он добавляет только один продукт в корзину. Какой идентификатор продукта является самым низким, который продукт добавляет в корзину.

Вот мой кусок кода яваскрипта

function addComboProductToCart(ids) { 
     var arrayOfStrings = ids.split(','); 
     for (var i = 0; i < arrayOfStrings.length; i++) { 
      AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/' + arrayOfStrings[i] + '/1/1'); 
     } 
    } 

Но это не показывает ни одной ошибки тоже. Так где же проблема?

ответ

3

На первом вам нужно изменить в public.ajaxcart.js, как показано ниже, поскольку есть Ajax вызова на каждом Добавить в корзину нам нужно установить его async:false для этого нужно добавить параметр, называемый async более ясно взглянуть при температуре ниже кода

//add a parameter async 
    addproducttocart_catalog: function (urladd,async) { 
     if (this.loadWaiting != false) { 
      return; 
     } 
     this.setLoadWaiting(true); 

     $.ajax({ 
      cache: false, 
      async:async, 
      url: urladd, 
      type: 'post', 
      success: this.success_process, 
      complete: this.resetLoadWaiting, 
      error: this.ajaxFailure 
     }); 
    }, 

Теперь я модифицировал свою функцию addding только параметр false

function addComboProductToCart(ids) { 
    var arrayOfStrings = ids.split(','); 
    for (var i = 0; i < arrayOfStrings.length; i++) { 

     AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/' + arrayOfStrings[i] + '/1/1',false); 

    } 
} 

Чтобы узнать вес шляпа async:false делает неясно this answer а также для уточнения

Сообщите мне, если вам нужна дальнейшая помощь.

+2

Да, это нормально. Шляпы выключены !! Но у меня есть один вопрос относительно этого обновления в базовом файле NopCommerce. Поскольку я разрабатываю плагин, поэтому мой плагин не сможет получить доступ ('public.ajaxcart.js'), базовый файл, следовательно, мне нужно написать ту же функцию с этой модификацией по-своему в разделе сценария? –

+2

О, да, вы должны добавить эту функцию для своего подключаемого модуля. Я знаю, что это плохая практика писать один и тот же код повсюду, но я проанализирую, как только я найду какое-либо решение, которое я обновлю вам. – Curiousdev

+0

Спасибо, что так любезны. Я тоже ищу решение. –

 Смежные вопросы

  • Нет связанных вопросов^_^