登録フォームのEメールでAJAXチェックをするようにしています。私のコードはこのようになります:
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;
}
私はいつも間違った応答を受けていて、$ responseをエコーすると500 Internal Server Errorを受け取ります。
何がおかしいのですか?
あなたはあなたのajaxでいくつかのことを見逃しています。あなたの問題を解決するのに役立つ以下の最新のコードを見つけてください
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();
}
これがお役に立てば幸いです。