单击一次按钮即可将多个产品添加到购物车 - NopCommerce
Multiple product add in cart on single button click - NopCommerce
我目前正在 NopCommerce
进行组合报价。所以我需要一次单击将多个产品添加到购物车。内置的 NopCommerce 格式用于将单个产品添加到购物车是
AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/' + productId + '/1/1'
和
AjaxCart.addproducttocart_details('/addproducttocart/details/' +productId + '/1', '#product-details-form')
它们都可以很好地添加单个产品。但是当我想添加多个产品时,它只会将单个产品添加到购物车中。提到我正在发送一个带有逗号分隔值的字符串,它是产品列表,在 Javascript 中它被解析为单个产品 ID。但是,它仅在购物车中添加单个产品。该产品添加到购物车的产品 ID 最低。[=14=]
这是我的一段 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');
}
}
但它也没有显示任何错误。那么问题出在哪里呢?
首先你需要在 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 以获得更多说明
如果您需要任何进一步的帮助,请告诉我。
我目前正在 NopCommerce
进行组合报价。所以我需要一次单击将多个产品添加到购物车。内置的 NopCommerce 格式用于将单个产品添加到购物车是
AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/' + productId + '/1/1'
和
AjaxCart.addproducttocart_details('/addproducttocart/details/' +productId + '/1', '#product-details-form')
它们都可以很好地添加单个产品。但是当我想添加多个产品时,它只会将单个产品添加到购物车中。提到我正在发送一个带有逗号分隔值的字符串,它是产品列表,在 Javascript 中它被解析为单个产品 ID。但是,它仅在购物车中添加单个产品。该产品添加到购物车的产品 ID 最低。[=14=]
这是我的一段 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');
}
}
但它也没有显示任何错误。那么问题出在哪里呢?
首先你需要在 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 以获得更多说明
如果您需要任何进一步的帮助,请告诉我。