2017-01-11 131 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

我會這麼做:

定義中的header.php或頁面一個AJAX網址將您添加優惠券

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

在function.php你必須定義AJAX調用

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的方式,但我建議你使用正確的方法來使用wordpress進行ajax調用。 ps:我已經正確更新代碼。所以,如果您在return_function上遇到問題,只需聲明它: 函數return_function(data) { console.log(data); } – mariobros

相關問題