我试图按下按钮将优惠券代码应用到购物篮中。 我有以下代码: -
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
存在。
一旦发送请求,服务器就不会发回响应。
我是否正确提出此请求或是否有其他方式?
提前谢谢。
答案 0 :(得分:2)
我会这样做:
在header.php中定义ajax url或在页面中添加优惠券
<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以管理回复。
答案 1 :(得分:1)
您无需在functions.php中添加自定义代码。 Woocommerce支持本地通过AJAX添加优惠券(请参见下文)。
您的代码中的错误:
apply_coupon
而不是apply-coupon
(下划线与破折号); 正确版本:
var data = {
coupon_code: jQuery(this).data('coupon'),
security: '<?php echo wp_create_nonce("apply-coupon") ?>'
};
jQuery.post('/?wc-ajax=apply_coupon', data).done(function(data) {
alert("Data Loaded: " + data);
});