在woocommerce中添加可变产品到带有Ajax的购物车

问题描述:

我的代码如下所述,除了它不仅将具有所选变体的变量产品添加到购物车中,还额外增加了相同数量的同一产品,是一个简单的产品。在woocommerce中添加可变产品到带有Ajax的购物车

element.on('click', 'button[type="submit"]', event => { 
    event.preventDefault(); 

    const quantity = parseInt(element.find('input[name="quantity"]').val(), 10) || 1; 
    const addToCartUrl = '/shopping-basket/?wc-ajax=add_to_cart'; 
    let xWWWFormUrlencodedData = `quantity=${quantity}`; 

    switch (scope.singleCopy.type) { 
     case 'variable': { 
      if (scope.selectedVariation) { 
       for (const attr of scope.selectedVariation.attributes) { 
        xWWWFormUrlencodedData += `&attribute_pa_${attr.slug}=${attr.option}`; 
       } 
       xWWWFormUrlencodedData += `&add-to-cart=${scope.singleCopy.id}`; 
       xWWWFormUrlencodedData += `&product_id=${scope.singleCopy.id}`; 
       xWWWFormUrlencodedData += `&variation_id=${scope.selectedVariation.id}`; 
      } 
      break; 
     } 
     case 'simple': { 
      xWWWFormUrlencodedData += `&product_id=${scope.singleCopy.id}`; 
      break; 
     } 
     default: { 
      console.error(`Unknown product type ${scope.singleCopy.type}.`); //eslint-disable-line no-console 
     } 
    } 

    $http.post(addToCartUrl, xWWWFormUrlencodedData, { 
     withCredentials: true, 
     headers: { 
      'Cache-Control': 'no-cache', 
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 
      Pragma: 'no-cache' 
     } 
    }).success(result => { 
     if (result.error) { 
      console.warn('The product has been added to the cart despite that the result object indicates an error!'); 
      // TODO: handle error 
      return; 
     } 
     console.log('Success.', result); 
     $rootScope.$broadcast('/cart/update/add'); 
    }).catch(data => { 
     console.error(data); 
     // TODO: handle error 
    }); 

}); 

如果我不派product_id,只能在所变化的变量产品添加到购物车(太棒了!),但结果对象指示错误(没有说明)。如果我然后导航到购物车页面,我会在ui中收到另一条错误消息:“对不起,此产品无法购买。”

我想现在我尝试了所有排列,设置变体id而不是产品ID关于参数,删除和添加回参数等等。任何想法如何解决这个问题?

+0

派生的自定义端点我在这里提交的问题插件作者后:https://github.com/woothemes/woocommerce /问题/ 10810 – borisdiakur

little chat与我已经成功地完成我想利用https://*.com/a/27278035/601466