发送多个AJAX请求以将产品添加到购物车失败

时间:2017-01-17 16:50:48

标签: jquery ajax wordpress woocommerce wordpress-theming

我正在尝试通过AJAX向woocommerce“购物车”添加一些不同的产品。它非常简单,但失败了。这是我的代码:

$.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一次性将多个不同的产品添加到购物车。也许我需要创建一个我从AJAX调用的自定义PHP脚本?

谢谢〜

1 个答案:

答案 0 :(得分:0)

原因是竞争ajax请求。因此,在每个循环中,您都会启动一个新请求,但“添加到购物车”操作一次只接受一个,并阻止其他操作。

解决方案:在设置下一个请求之前,等待ajax调用的成功触发。

e.g。像这样:

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();
    }
  });
})();