我正在使用以下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() ); ?>" />
这是我应该做的事情,还是有更好的更标准的方法来解决这个问题。感谢。