Woocommerce ajax从购物车中删除

时间:2016-09-21 09:59:28

标签: php jquery ajax wordpress woocommerce

我意识到有重复的线程,但提出的解决方案不起作用(100%) - 这是我使用https://stackoverflow.com/a/24027583/1826992的解决方案。基本上ajax调用是从购物车中删除该项目,但迷你购物车不更新,直到我刷新页面。我在这里:

add_action( 'wp_footer', 'add_js_to_wp_wcommerce');

function add_js_to_wp_wcommerce(){ ?>
    <script type="text/javascript">
    jQuery('body').on('click',".remove",function (){
        var product_id = jQuery(this).attr("data-product_id");
                console.log(product_id);
        jQuery.ajax({
            type: 'POST',
            dataType: 'json',
            url: "/wp-admin/admin-ajax.php",
            data: { action: "product_remove", 
                    product_id: product_id
            },success: function(data){
                console.log(data);
            }
        });

        return false;
    });
    </script>
<?php }



add_action( 'wp_ajax_product_remove', 'product_remove' );
add_action( 'wp_ajax_nopriv_product_remove', 'product_remove' );
function product_remove() {
    $cart = WC()->instance()->cart;
    $id = $_POST['product_id'];
    $cart_id = $cart->generate_cart_id($id);
    $cart_item_id = $cart->find_product_in_cart($cart_id);

    if($cart_item_id){
       $cart->set_quantity($cart_item_id,0);
    }
}

正如我所提到的,这一切似乎一直有效,直到&#34;行动&#34;。此时Console.log(数据)仅携带&#34; 0&#34;。我认为这应该有product_id。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

从你的php函数&amp;中返回一些东西返回后使用wp_die(),并将js包装在文档就绪语句