近期用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,即修改此方法为同步就可以解决问题了