javascript - 电子商务 |通过 Ajax 清除购物车

标签 javascript php ajax wordpress woocommerce

我正在尝试设置一个 AJAX 函数来清空我的购物车

HTML

<a onclick="clearCart(this)" data-href="/product-page/" data-productID="182">Go to Product</a>

JavaScript

function clearCart(d) {
    jQuery(document).ready(function($) {
        var productID = d.getAttribute("data-productID");
        $.ajax({
            url: "addtocart.php",
            data: {productID: productID},
            type: "post",
            success: function(output) {
                window.location = d.getAttribute("data-href");
                //alert(output);
            }
        });
    });
}

PHP

if(isset($_POST['productID']) && !empty($_POST['productID'])) {   
    global $woocommerce;
    $woocommerce->cart->empty_cart();
    //echo $_POST['productID'];
}

结果

  • 由第 3 行 PHP 引起的内部服务器错误
  • 警告 var 输出正常(检查注释掉的代码)

解决方案

我自己弄明白了,@MirzaP 提供了一些帮助

JS

      function clearCart(d) {
            jQuery.post(
                "https://dercampus.ch/wp-admin/admin-ajax.php", 
                //ajaxurl, 
                {
                    "action": "clearcart",
                    "data":   d.getAttribute("data-productid")
                }, 
                function(){
                    window.location = d.getAttribute("data-href");
                }
            );
        }

PHP

add_action('wp_ajax_nopriv_clearcart',function(){
    global $woocommerce;
    $woocommerce->cart->empty_cart();
});

最佳答案

请将您的 php 代码更改为

if(isset($_POST['data']) && !empty($_POST['data'])) {   
    global $woocommerce;
    $woocommerce->cart->empty_cart();
    //echo $_POST['productID'];
}

你传入的参数是data,不是productID

关于javascript - 电子商务 |通过 Ajax 清除购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40174894/

相关文章:

javascript - 正则表达式:匹配除第一个小数以外的所有小数

java - 具有多个值的选项标签

php - 将图像保存在服务器中并链接到数据库 PHP 数据对象 PDO OOP

mysql - 获取值并在模式弹出窗口中更新而无需在 codeigniter 中刷新页面

javascript - jQuery DataTables 中的空表体

javascript - Jquery更改功能似乎可以工作,但没有做任何事情

javascript - 当 jQuery 解析 html 时 - Chrome 抛出 net::ERR_FILE_NOT_FOUND

php - rbac Yii2 中 auth_item 表中的类型是什么

javascript - Ajax 调用不适用于 android 但在 ios Cordova 上运行良好

jquery - 在 jQuery appendTo 函数之后选择一个元素