为什么AJAX响应为0!让我很恼火!。我想在blur上检查电子邮件地址是否有效。请建议我这是我的代码这是我的php代码
add_action(\'wp_ajax_send_message_to_customer\',\'add_send_msg\');?>
<form>
<input type="text" name="email_customer" id="email_customer"/>
</form>
<div id="email_info"></div>
<?php
function add_send_msg(){
$email = isset($_POST[\'email_customer\']) ? $_POST[\'email_customer\'] : null;
if( $email ){
if(is_email($email)){
$msg = \'valid\';
}
}
echo $msg;
die();
}
添加js和本地化脚本
add_action( \'init\', \'my_script_enqueuer\' );
function my_script_enqueuer() {
wp_enqueue_script( "send_email", path_join(WP_PLUGIN_URL,basename(dirname(__FILE__)).\'/send_email.js\', array(\'jquery\')));
wp_localize_script( \'send_email\', \'myAjax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' )));
}
和js文件发送电子邮件。js公司
jQuery(document).ready(function () {
jQuery("input[name=\'email_customer\']").blur(function (){
dataString = "email_customer="+jQuery(this).attr("value")+"&action=send_message_to_customer";
jQuery.ajax({
type: "POST",
data: "email_customer="+jQuery(this).attr("value")+"&action=send_message_to_customer",
url: myAjax.ajaxurl,
beforeSend: function(){
jQuery("#email_info").html("Checking Email......");
},
success: function(data) {
alert(data);
if( data == \'valid\'){
jQuery("#email_info").html("Email Ok");
}
else{
jQuery("#email_info").html("You have entered invalid email");
}
}
});
});
});
SO网友:Otto
首先,不要在init
行动在上排队wp_enqueue_scripts
前端操作,或admin_enqueue_scripts
后端的操作。
其次wp_ajax_*
操作仅适用于已登录的用户。对于未登录的用户,必须使用wp_ajax_nopriv_*
改为操作。如果它需要对两者都起作用,那么您必须同时钩住两者。
最后是jQuery。ajax调用缺少“send\\u message\\u to\\u customer”的“action”,数据格式错误。应如下所示:
data: [\'email_customer\' : jQuery(this).attr("value") ],
action: \'send_message_to_customer\',
或者可能只是
jQuery(this).val()
而不是在那里调用attr()。不知道,我自己没有尝试代码来测试它。