Registration e-mail check with AJAX

I’m trying to make a AJAX check on e-mail on registration form. My code looks like this:

function add_ajaxurl_cdata_to_front(){ ?>
    <script type="text/javascript"> //<![CDATA[
        ajaxurl="<?php echo admin_url( "admin-ajax.php' ); ?>';
    //]]> </script>
<?php }

add_action( 'wp_head', 'add_ajaxurl_cdata_to_front', 1);
add_action( 'wp_footer', 'add_js_to_wp_footer' );
function add_js_to_wp_footer(){ ?>
    <script type="text/javascript">
    jQuery('#reg_email').on("change",function(){
        jQuery.ajax({
            type: 'POST',
            url: ajaxurl,
            data: {"action": "custome_ajax_email_check"},
            success: function(data){
                if(data.result) {
                    alert('Email exists!');
                } else {
                    alert('Email does not exist!');
                    console.log(data.result)
                }
            }
        });
    });
    </script>
<?php }

add_action('wp_ajax_nopriv_custome_ajax_email_check', 'custome_ajax_email_check');

function custome_ajax_email_check(){
    $email = $_POST['email'];

    // do check
    if ( email_exists($email) ) {
        $response->result = true;
    }
    else {
        $response->result = false;
    }

    echo $response;
}

I’m always getting false response and when I echo the $response I get 500 Internal Server Error.

What am I doing wrong?

1 Answer
1

You have missed few things in your ajax.
Please find following updated code which will help you to solve your problem

function add_ajaxurl_cdata_to_front(){ ?>
   <script type="text/javascript"> //<![CDATA[
       ajaxurl="<?php echo admin_url( "admin-ajax.php' ); ?>';
   //]]> </script>
<?php }

add_action( 'wp_head', 'add_ajaxurl_cdata_to_front', 1);
add_action( 'wp_footer', 'add_js_to_wp_footer' );
function add_js_to_wp_footer(){
    ?>
   <script type="text/javascript">

   jQuery('document').ready(function(){
        jQuery('#reg_email').on("change",function(){            
            jQuery.ajax({
                type: 'POST',
                url: ajaxurl,
                data: {"action": "custome_ajax_email_check"},
                success: function(data){
                    console.log(data);
                    data = jQuery.parseJSON(data);
                    console.log(data.result);
                    if(data.result) {
                        alert('Email exists!');
                    } else {
                        alert('Email does not exist!');

                    }
                }
            });
        });
    });
   </script>
<?php }

add_action( 'wp_ajax_custome_ajax_email_check', 'custome_ajax_email_check' );
add_action('wp_ajax_nopriv_custome_ajax_email_check', 'custome_ajax_email_check');

function custome_ajax_email_check(){
   $email = $_POST['email'];

   // do check
   if ( email_exists($email) ) {
       $response->result = true;
   }
   else {
       $response->result = false;
   }

   echo( json_encode( $response));
   wp_die();
}

Hope this will helps you!

Leave a Comment