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?
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!