使用woocommerce中的ajax删除自定义购物车中的产品

问题描述:

我在从购物车中删除产品时遇到问题。我的代码在ajax中删除产品,但不刷新购物车。这是我的代码:使用woocommerce中的ajax删除自定义购物车中的产品

add_filter('woocommerce_add_to_cart_fragments','woocommerce_header_add_to_cart_fragment'); function woocommerce_header_add_to_cart_fragment($fragments) { 
global $woocommerce; 
$cart = $woocommerce->cart->cart_contents; 
ob_start(); 
$cart_count = sprintf(_n('%d', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count); 
?> 
<div data-toggle="dropdown" class="cart-customlocation" [...] ?></span> 
    <div class="dropdown-menu custom-cart"> 

     <?php foreach($cart as $cart_item_key => $item){ ?> 

      <?php $img_url = $item['data']->image_id; ?> 
      <img src="<?php echo wp_get_attachment_url($img_url); ?>" alt=""> 
      [...] <- content 
      <a class="remove-product" data-product_id="<?php echo $cart_item_key ?>">X</a> 
     <?php } ?> 
     <script type="text/javascript"> 
      jQuery('.remove-product').click(function(){ 
       var product_id = jQuery(this).attr("data-product_id"); 
       console.log(product_id); 
       jQuery.ajax({ 
        type: 'POST', 
        dataType: 'json', 
        url: "myURL", 
        data: { action: "product_remove", 
          product_id: product_id 
        },success: function(data){ 
        } 
       }); 
       return false; 
      }); 
     </script> 
    </div> 
</div> 
<?php $fragments['.cart-customlocation'] = ob_get_clean(); 
return $fragments; 

,这是一个名为AJAX功能:

function product_remove() { 

global $woocommerce; 

$id = $_POST['product_id']; 

$woocommerce->cart->remove_cart_item($id);} 

你去除你的PHP对象的项目,但如果你想从当前视图中移除你必须选择该项目并使用jquery在你的'ajax调用的成功函数中删除它。类似...

,success: function(data){ 
    $([selector for your product line]).remove(); 
} 

我看不到您的产品系列的html(要查看您想要删除的格式)。如果你粘贴它,我会帮你一把。

+0

谢谢你回答我的问题。我理解这个解决方案,我会测试它。请给我第二个。 :) –

嗯。我将此代码添加到我的文件:

 <?php foreach($cart as $cart_item_key => $item){ ?> 
      <div class="menu-product-id-<?php echo $cart_item_key ?>"> 
       <?php $img_url = $item['data']->image_id; ?> 
       <img src="<?php echo wp_get_attachment_url($img_url); ?>" alt=""> 

       <?php echo $name = $item['data']->title; ?> 

       <?php echo $price = $item['line_total']/$item['quantity']; ?> 

       <?php echo $quantity = $item['quantity']; ?> 

       <?php echo $item_key = $cart_item_key; ?> 

       <?php echo $item_id = $item['product_id']; ?> 

       <a class="remove-product" data-product_id="<?php echo $cart_item_key ?>">REMOVE</a> 
      </div> 
     <?php } ?> 

这个代码AJAX:

<script type="text/javascript"> 
      jQuery('.remove-product').click(function(){ 
       var product_id = jQuery(this).attr("data-product_id"); 
       console.log(product_id); 
       jQuery.ajax({ 
        type: 'POST', 
        dataType: 'json', 
        url: "myURL", 
        data: { action: "product_remove", 
          product_id: product_id 
        },success: function(data){ 
         $('menu-product-id-'+product_id).remove(); 
        } 
       }); 
       return false; 
      }); 
     </script> 

但东西不行

+0

“。”!!!!!!!!!! XD –

+0

$('menu-product-id - '+ product_id).remove(); => $('。menu-product-id - '+ product_id).remove(); –

+0

完美的作品!非常感谢你! :) A.伊格莱西亚斯 –