我有一个简单的表单,用于注册新用户。我想阻止用户再次提交相同的电子邮件ID。因此,在提交表单之前,我想要检查电子邮件ID是否存在进行Ajax检查。如果电子邮件ID存在,我会提醒用户。如果没有,我会提交表格。
$("#sign_in_form").submit(function(event){
event.preventDefault();
$.post("http://xyz.com/check_if_user_exists", {
email : $("#contact_person_email").val()
}).done(function(data) {
var res = parseInt(data);
if(res==1){
//Email Exists
alert("Email exists . Please use different email " );
return false; //----------------------------1)
}else{
//Email doesnt exist
return true; //--------------------------- 2)
}
});
//end of function
});
此代码的问题是由于Javascript的异步性质,该函数甚至在从ajax post语句返回结果之前就结束了。因此,1)和2)处的return false或return true语句无效。什么是正确的处理方法?
答案 0 :(得分:3)
如果检查有效,则使用js native event提交表单:
$("#sign_in_form").submit(function (event) {
event.preventDefault();
$.post("http://xyz.com/check_if_user_exists", {
email: $("#contact_person_email").val()
}).done(function (data) {
var res = parseInt(data);
if (res == 1) {
//Email Exists
alert("Email exists . Please use different email ");
} else {
document.getElementById('sign_in_form').submit();
}
});
//end of function
});