2017-01-11 1 views
1

Я пытаюсь применить код купона к корзине при нажатии кнопки. У меня есть следующий код: -Woocommerce aJax примените код купона в корзину

coupon = jQuery(this).data('coupon'); 
data = {coupon_code : coupon}; 
jQuery.post("?wc-ajax=apply-coupon", { coupon_code: coupon }).done(function(data) { 
    alert("Data Loaded: " + data); 
}); 

я могу увидеть следующие данные разбираемый на сервер: -

coupon_code: 10percentdiscount 

10percentdiscount существует.

Сервер не отправляет ответ после отправки запроса.

Я правильно делаю этот запрос или есть другой способ?

Заранее спасибо.

ответ

2

Я хотел бы сделать так:

Определение Ajax URL в header.php или странице вы бы добавить купон

<script type="text/javascript" language="javascript"> 
var ajax_url = "<?php bloginfo('url'); ?>/wp-admin/admin-ajax.php"; 
</script> 

В function.php вы должны определить АЯКС позвонить

function implement_ajax() { 
    include(TEMPLATEPATH . '/ajax_return.php'); 
} 

add_action('wp_ajax_my_special_action', 'implement_ajax'); 
add_action('wp_ajax_nopriv_my_special_action', 'implement_ajax'); 

В ajax_return.php вы использовали код, который добавляет купон на woocommerce:

if (isset($_POST['couponcode'])) 
    { apply_coupon($_POST['couponcode']); }; 

function apply_coupon($couponcode) { 
    global $woocommerce; WC()->cart->remove_coupons(); 
    $ret = WC()->cart->add_discount($couponcode); 
    $array = array('return' => $ret); print_r($array); 
} 
exit; 

Ваш jQuery.post воля стала это:

<script type="text/javascript"> 
jQuery(function(){ 
    coupon = jQuery(this).data('coupon'); 
    jQuery.post(ajax_url, {action : 'my_special_action', couponcode : coupon}, return_function, 'JSON'); 
}); 

function return_function(data) 
{ 
    console.log(data.return); //contains true if coupon was applied 
} 
</script> 

Если вам нужно, звоните return_function управлять ответ.

+0

Я внедрил ваш код, когда я использовал код, который у вас есть выше, я получил return_function, который не определен. Я изменил ваш код, и сервер ответил 0, а код купона не был добавлен. –

+0

Не могу ли я сделать это с помощью wc-ajax = apply_coupon. Я заметил, что необходимо определить ключ безопасности, знает ли кто-нибудь, как он генерирует ключ? –

+0

Я не знаю, существует ли способ использования wp-ajax, но я предлагаю вам использовать правильный способ сделать ajax-вызов с помощью wordpress. ps: Я правильно обновил код. поэтому, если у вас есть проблемы с return_function, просто объявите его: function return_function (data) { console.log (data); } – mariobros