在利用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' );