web-dev-qa-db-fra.com

Enregistrement e-mail vérifier avec AJAX

J'essaie de vérifier AJAX le courrier électronique figurant sur le formulaire d'inscription. Mon code ressemble à ceci:

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;
}

Je reçois toujours de fausses réponses et quand j'échante la réponse $, j'obtiens 500 Internal Server Error.

Qu'est-ce que je fais mal?

1
ShabbyAbby

Vous avez manqué peu de choses dans votre ajax. Veuillez trouver le code suivant mis à jour qui vous aidera à résoudre votre problème

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();
}

J'espère que cela vous aidera!

1