Trying to run a Ajax request from a checkout form in woocommerce via a custom plugin
I have a custom plugin with the following code
add_action( 'init', 'my_script_enqueuer' );
function my_script_enqueuer() {
wp_register_script( gift_card_redeem, WP_PLUGIN_URL.'/plugin-folder/gift_card_redeem.js', array('jquery') );
wp_localize_script( 'gift_card_redeem', 'myAjax', array( 'ajaxurl' = admin_url( 'admin-ajax.php' )));
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'gift_card_redeem' );
}
add_action(wp_ajax_gift_card_redeem, gift_card_redeem);
function gift_card_redeem(){
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
error_log(test !empty);
$result['type'] = success;
$result = json_encode($result);
echo $result;
}
else {
error_log(test else);
header(Location: .$_SERVER[HTTP_REFERER]);
}
die();
}
and a js file in the plugin called gift_card_redeem.js
jQuery(document).ready(function () {
jQuery(.redeem_gift_card).click(function (e) {
e.preventDefault();
jQuery.ajax({
type: post,
dataType: json,
url: myAjax.ajaxurl,
data: { action: redeem_gift_card },
success: function (response) {
if (response.type == success) {
jQuery(#test).html(response);
} else {
alert(something broke);
}
},
});
});
});
and my php and html on the form-checkout page is as follows
?php
$link = admin_url('admin-ajax.php?action=gift_card_redeem');
echo 'a class=redeem_gift_card href=' . $link . ' test/a';
?
h1 id=testTest/h1
I am getting a 400 bad request error for admin-ajax.php and I am not quite sure why. Any help would be greatly appreciated.
Thanks
Topic woocommerce-offtopic ajax plugin-development Wordpress
Category Web