2017-01-17 2 views
0

Я пытаюсь добавить несколько различных продуктов в корзину «через корзину» через AJAX. Это супер просто, но он терпит неудачу. Вот мой код:Отправка нескольких запросов 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); 
}); 

Я называю это в функцию несколько раз для каждого продукта. Первый продукт, который я получаю из console.log, является единственным, который был добавлен. Как это исправить? Опять для повторной крышки, ЦЕЛЬ: Добавить сразу несколько разных товаров в корзину сразу с помощью AJAX. Возможно, мне нужно создать собственный php-скрипт, который я вызываю из AJAX?

Thanks ~

+0

Вам нужен цикл для перебора каждого элемента в корзине – Kramb

+0

Да, у меня есть цикл, который вызывает эту функцию для каждого элемента и добавляет его в корзину. Но добавляется только один. Может быть, вам нужно некоторое время ждать между каждым звонком, чтобы добавить? – Zander

ответ

0

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

Решение: Подождите, пока триггер успеха вашего вызова 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(); 
    } 
    }); 
})();