单击一次按钮即可将多个产品添加到购物车 - 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 以获得更多说明

如果您需要任何进一步的帮助,请告诉我。