2016-10-21 6 views
2

Я пытаюсь настроить функцию AJAX, чтобы очистить мою корзину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']; 
} 

Результат

  • Внутренняя ошибка сервера вызвана третьей PHP линии
  • Alerting выход вар работает (проверьте outcommented код)

РЕШЕНИЕ

Я понял это от меня и с большой помощью от @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(); 
}); 
+0

При установке WP_DEBUG к true в вашем wp-config.php, что отображается внутренняя ошибка? – MirzaP

+0

Он ничего не показывает для этого файла php. Нужно ли мне что-то корректировать, так как это вызов AJAX? Файл находится в подкаталоге в моем плагине –

+0

Он показывает что-либо в консоли браузера, когда вы делаете правый щелчок -> Проверить элемент -> Консоль (в хроме)? – MirzaP

ответ

2

Пожалуйста, измените ваш PHP код

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

Ваш параметр, который передается в это данные, а не PRODUCTID

+0

О, извините, я изменил сообщение, чтобы сделать его более читаемым и забыл настроить вызов AJAX. Пожалуйста, просмотрите отредактированный пост. –

+0

Вам следует попробовать выполнить некоторые эхо-инструкции внутри вашего php-вызова https://dercampus.ch/wp-content/plugins/dercampus/assets/php/addtocart.php?productId=test, чтобы убедиться, что когда-то туда попадают напрямую. .. измените _POST в php-коде на _REQUEST ... конечно, в конечном продукте вы бы удалили эхо, а также пропустили в nonce, чтобы предотвратить прямой доступ и т. д. – MirzaP

+0

Я понял это тем временем, проверьте обновленный пост , Большое спасибо за ваше время и подсказку ajax-admin и WP_DEBUG! –

Смежные вопросы