提交表单时,先进行ajax验证,根据验证结果判断是否提交表单。
这时的ajax验证必须是同步的,才能保证先验证后提交表单。
代码如下:
function checkform(){
var flag=0;
//ajax同步提交
$.ajax({
type : "get",
url : "base.php",
dataType:'json',
data : "action=check_info&user_str="+user_str+"&email_str="+email_str,
async : false,
success : function(msg){
if(msg.user!='' && typeof msg.user !="undefined"){
alert(msg.user);
flag=1;
return false;
}else if(msg.db!='' && typeof msg.db !="undefined"){
alert(msg.db);
flag=1;
return false;
}else if(msg.email!='' && typeof msg.email !="undefined"){
alert(msg.email);
flag=1;
return false;
}else if(msg.emaildb!='' && typeof msg.emaildb !="undefined"){
alert(msg.emaildb);
flag=1;
return false;
}
}
});
if(flag==1){
return false;
}
}
最后根据flag的值去判断要不要提交。
jquery里的ajax调用是异步的(就是触发了提交按钮后先提交表单了,然后去验证,有时也会发现在提交表单前alert()一点东西的话,验证又可以用了,这只是延迟了表单提交,而给出ajax验证的时间而已),提交表单时不能用$.get(),$.post()来验证;