javascript - 使用 AJAX 从自定义页面上的按钮中删除所有购物车项目
问题描述
我正在构建一个批量订单表单插件(用于 wordpress/woocommerce)——所有添加到购物车的功能都运行良好。我正在努力创建一个“取消订单”按钮,按下该按钮会清除所有项目行(此位有效)以及从购物车中删除所有项目。
我正在尝试结合使用 AJAX/js、php 和标准 HTML ..:
我的按钮..:
<button class="btn btn-danger btn-lg" id="cancelorder">Cancel Order</button>
我的购物车空功能..:
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ( isset( $_GET['empty-cart'] ) ) {
$woocommerce->cart->empty_cart();
}
}
最后,我的 js 函数/ajax 调用..:
$("#cancelorder").click(function(){
if(confirm('Are you sure you want to clear all rows?')){
$(".addedrow").remove(); //removes line items - not related to issue
$.ajax({
type: "POST",
url: '/wp-admin/admin-ajax.php?action=woocommerce_clear_cart_url',
data: {action : 'woocommerce_clear_cart_url'},
success: function (res) {
if (res) {
alert('Removed Successfully');
}
}
});
} else {
//back out with no action
}
});
行已从表单中删除,但项目仍保留在购物车中。
解决方案
更新:我可以通过将上面的现有代码修改为以下内容来实现这一点..:
购物车清空功能..:
add_action('wp_ajax_wc_woocommerce_clear_cart_url', 'wc_woocommerce_clear_cart_url');
add_action('wp_ajax_nopriv_wc_woocommerce_clear_cart_url', 'wc_woocommerce_clear_cart_url');
//added wc_ prefix in case of function name conflict
function wc_woocommerce_clear_cart_url() {
global $woocommerce;
$returned = ['status'=>'error','msg'=>'Your order could not be emptied'];
$woocommerce->cart->empty_cart();
if ( $woocommerce->cart->get_cart_contents_count() == 0 ) {
$returned = ['status'=>'success','msg'=>'Your order has been reset!'];
}
die(json_encode($returned));
}
和 js/ajax 方面..:
$("#cancelorder").on('click',function(){
if(confirm('Are you sure you want to clear all rows?')){
$.ajax({
type: 'POST',
dataType: 'json',
url: '/wp-admin/admin-ajax.php?action=wc_woocommerce_clear_cart_url',
data: {action : 'wc_woocommerce_clear_cart_url'},
success: function (data) {
if (data.status != 'success') {
alert(data.msg);
} else {
$('#itemrows').html('');
addrows();
}
}
});
} else {
//back out with no action
}
});
推荐阅读
- ibm-cloud - Watson Assistant 和 node-red
- r - 改进和加速代码以确定大量组合
- azure-devops - 基于一组布尔参数创建 MSBuild 参数字符串
- discord - 在 DiscordJS 中删除消息通知
- javascript - 使用可变元素 ID 时,jQuery 如何区分函数调用(例如点击时)?
- .net - 库 System.Threading.Tasks.Extensions 未在 Azure Web 应用上加载
- delphi - 直接在 Delphi IDE 编辑器中显示 Subversion 差异
- algorithm - 如何可视化 3 路归并排序?
- swift - 意外发现nil,但是vars不是nil
- kubernetes - 在 Kubernetes CronJob 中运行 `find` 命令