WooCommerce Ajax添加到购物车工作变量而非单一产品

时间:2017-08-02 05:16:30

标签: jquery ajax wordpress woocommerce

我正在使用以下jQuery代码在WooCommerce中提交添加到购物车操作:

jQuery(document).ready(function($) {

    $('form').submit(function() {

        $theForm = $(this);

        url = $theForm.attr('action');

        // send xhr request
        $.ajax({
            type: $theForm.attr('method'),
            url: $theForm.attr('action'),
            data: $theForm.serialize(),
            success: function(data) {
                console.log('Yay! Form sent.');
            }
        });

        // prevent submitting again
        return false;

    });

});

哪种产品适用于可变产品,但单品无效。似乎简单的产品形式的显示方式与变量形式和帖子的方式不同。

如果我用simple-add-to-cart-button.php中的按钮代码替换simple.php按钮代码,那么ajax工作正常。但处理这种情况的正确方法是什么?

更新

控制台中没有错误。但是,检查Ajax请求表明,对于可变产品形式(工作正常),这是数据:

attribute_ticket-type:Adult+(11%2B+Years)
wc_deposit_option:no
start_date:31+December%2C+2018
start_date_submit:2018-12-31
end_date:
end_date_submit:
_wceb_nonce:901daca64c
quantity:1
add-to-cart:12223
product_id:12223
variation_id:12229

...但是对于简单的产品页面会报告(注意缺少产品ID和添加到购物车ID等)

start_date:4 August, 2017
start_date_submit:2017-08-04
end_date:
end_date_submit:
_wceb_nonce:901daca64c
wc_deposit_option:no
quantity:1

这解释了为什么没有记录任何动作,因为没有记录它的ID。如果我将以下隐藏的输入添加到简单产品页面上的按钮,它可以工作:

<input type="hidden" name="add-to-cart" value="<?php echo absint( $product->get_id() ); ?>" />

这是我应该做的事情,还是有更好的更标准的方法来解决这个问题。感谢。

0 个答案:

没有答案