我目前正致力于NopCommerce
的组合优惠。所以我需要一键添加多个产品到购物车。内置的NopCommerce格式用于将单个产品添加到购物车中
AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/' + productId + '/1/1'
和
AjaxCart.addproducttocart_details('/addproducttocart/details/' +productId + '/1', '#product-details-form')
它们都可以很好地添加单个产品。但是当我想添加多个产品时,它只是将单个产品添加到购物车中。提到我发送一个带有昏迷分离值的字符串,这是一个产品列表,在Javascript中它正在解析为单个产品ID。但是,它只在购物车中添加单个产品。哪个产品ID是产品添加到购物车中的最低值。
这是我的javascript代码
function addComboProductToCart(ids) {
var arrayOfStrings = ids.split(',');
for (var i = 0; i < arrayOfStrings.length; i++) {
AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/' + arrayOfStrings[i] + '/1/1');
}
}
但它也没有显示单个错误。那么问题出在哪里?
答案 0 :(得分: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
});
},
现在我通过添加参数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以获得更多说明
如果您需要任何进一步的帮助,请与我们联系。