近期用wordpress为朋友搭建个网站,其中有个模块需要实现类似于报名的功能,其中根据身份证信息,确定该信息是否已提交,通过ajax实现实时验证,过程中后台返回值出现undefined,折腾了很长时间,最终解决。

function blur_checkidentityNo() {
if ($(“#identityNo”).val()==””) {
$(“#identityNomsg”).text(“请输入身份证号”).addClass(“errorc”);

	} else {
		$.ajax({
		type: "POST",
		url: "c" ,
		async:false,
		data: $('#lqiuzhi').serialize(),
		success: function (date) {
			if(date==1){$("#identityNomsg").text("您已登记过信息,如需帮助请联系管理员").addClass("errorc");}
			else{$("#identityNomsg").text("√").addClass("okc");}
		},
		error : function() {
			$("#identityNomsg").text("错误").addClass("errorc");
		}
		});
	}
}

看第9行代码,关键就在此处,原因是Jquery的ajax是异步的,所以大多时候没执行完AJAX就return htmlcontent了,所以会一直返回undefined, 所以只要添加async: false,即修改此方法为同步就可以解决问题了