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


My action was wrong in the ajax request

jQuery(document).ready(function () {
  jQuery(".redeem_gift_card").click(function (e) {
    e.preventDefault();

    jQuery.ajax({
      type: "post",
      dataType: "json",
      url: myAjax.ajaxurl,
      data: { action: "gift_card_redeem" }, // not redeem_gift_card
      success: function (response) {
        if (response.type == "success") {
          jQuery("#test").html(response.type);
        } else {
          alert("something broke");
        }
      },
    });
  });
});

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.