在利用ajax时,一般分为html、js、php三个部分,在wordpress中,我们不必要再建立一个php页面来处理相关的数据,我们可以通过admin-ajax.php,在主题的functions.php中写上对应的函数即可,其中,我们必须要加上钩子。
//wp_ajax_nopriv效验用户为已登录时启用的方法 add_action( 'wp_ajax_CheckidentityNo', 'CheckidentityNo' ); //wp_ajax_nopriv效验用户为未登录时启用的方法 add_action( 'wp_ajax_nopriv_CheckidentityNo', 'CheckidentityNo' );
wp_ajax_CheckidentityNo第一个参数是wp_ajax_函数名称,wp_ajax_nopriv_CheckidentityNo表示没有登录的用户的处理函数,这里对有没有登录的用户都是一样的,所以都写上。
以下为我的代码:
HTML
<form id="lqiuzhi" action="#" method="post" onsubmit="return false"> <ul> <li> <span>姓名:</span> <input type="text" name="uname" id="uname"> <font id="unamemsg">*</font> </li> <li> <span>身份证号:</span> <input type="text" name="identityNo" id="identityNo"> <font id="identityNomsg">*</font> </li> <input type="submit" value="提 交" onclick="sub()" class="subutton"> </li> </form>
Js Ajax
function blur_checkidentityNo() { if ($("#identityNo").val()=="") { $("#identityNomsg").text("必填").addClass("errorc"); } else { jQuery(document).ready(function($){ $.ajax({ type: "POST", url: "<?php echo admin_url("admin-ajax.php"); ?>" , data: {action:'CheckidentityNo',identityNo:$("#identityNo").val(),}, success: function (date) { if(date==1){$("#identityNomsg").text("身份证已存在,请联系管理员").addClass("errorc");} else{$("#identityNomsg").text("√").addClass("okc");identityNoCheck=true;} }, error : function() { $("#identityNomsg").text("错误").addClass("errorc"); } }); }); } }
functions.php
function CheckidentityNo() { global $wpdb; $cidentityNo=$_POST['identityNo']; $IsHave = $wpdb -> get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->postmeta where meta_key=%d and meta_value=%s",'identityNo',$cidentityNo)); echo $IsHave; die(); } add_action( 'wp_ajax_nopriv_CheckidentityNo', 'CheckidentityNo' ); add_action( 'wp_ajax_CheckidentityNo', 'CheckidentityNo' );