使用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(要查看您想要删除的格式)。如果你粘贴它,我会帮你一把。
嗯。我将此代码添加到我的文件:
<?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>
但东西不行
“。”!!!!!!!!!! XD –
$('menu-product-id - '+ product_id).remove(); => $('。menu-product-id - '+ product_id).remove(); –
完美的作品!非常感谢你! :) A.伊格莱西亚斯 –
谢谢你回答我的问题。我理解这个解决方案,我会测试它。请给我第二个。 :) –