Отправка нескольких AJAX-запросов на добавление продукта в корзину

Я пытаюсь добавить несколько различных продуктов в корзину woocommerce через AJAX. Это очень просто, но это не удается. Вот мой код:

$.ajax({url: "/wordpress/?post_type=product&add-to-cart=" + p_id,
      statusCode: {
        200: function() {
          console.log('/wordpress/?post_type=product&add-to-cart=' + p_id);
          console.log('It Worked');
        }
      }
    }
);

Я также сделал:

$.get('/wordpress/?post_type=product&add-to-cart=' + p_id, function() {
         console.log('/wordpress/?post_type=product&add-to-cart=' + p_id);
});

Я вызываю это в функции несколько раз для каждого продукта. Первый продукт, который я получаю консоль.log from-единственный, который был добавлен. Как это исправить? Снова к re-cap,
Цель: добавить несколько различных продуктов в корзину одновременно с AJAX. Может быть, мне нужно создать пользовательский PHP-скрипт, который я вызываю из AJAX?

Благодаря~

1 ответ

  1. Причина-конкурирующие запросы ajax. Таким образом, в каждом цикле вы запускаете новый запрос, но действие надстройки в корзину принимает только один за один раз и блокирует другие.

    Решение: дождитесь успешного запуска вызова ajax перед настройкой следующего запроса.

    например как так:

    var i = 0;
    var arrayProductIds = [1,2,3];
    
    (function makeAjaxRequest() {
      $.post('?add-to-cart=' + arrayProductIds[i], function() {
    
        // success, so start next request
        i++;
        if (i === arrayProductIds.length){
          // all products have been added
        }else{
          makeAjaxRequest();
        }
      });
    })();