我正在尝试通过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脚本?
谢谢〜
答案 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();
}
});
})();