我有一个自定义的“迷你购物车”,它具有购物车主页面的所有功能,即更改数量、删除项目、输入优惠券、删除优惠券。我目前正在监听change购物车form元素并通过 Ajax 提交(简化如下):
ajaxTask = $.post(
$form.action, // this is a non-Ajax (front-end) URL, ie "/cart"
$form.serialize()
)
.done(function(data,status,jqXHR){
$cart.html(data);
});
这会触发普通的 WC 表单处理程序,就好像update_cart单击了按钮一样(我添加<input type="hidden" name="update_cart" id="update_cart" value="1">到表单中是为了实现这一点)。
问题是,“更新购物车”操作有一个内置的重定向,它应该重新加载页面。所以上面的函数返回整个页面。
据我所知,没有其他函数可以简单地处理表单(无论是更改数量、删除项目、添加项目还是应用优惠券)并退出。将大部分表单处理程序复制/粘贴到我自己的代码中只是为了避免重定向,这似乎是一种笨拙/愚蠢/不好的做法。
我希望服务器做的是:
static function ajax_update_cart() {
// ( an action that updates the cart and outputs nothing )
echo cart_html(); // output the custom cart HTML
exit;
}
但我没有看到明显的方式。我确实了解购物车碎片,但这些碎片至少需要服务器往返两次。有没有办法提交购物车数据,更新购物车,然后返回我自己的 HTML?
宝慕林4294392