我有一个简单的HTML表单。我正在尝试使用javascript对表单进行一系列验证。
$("#sign_in_form").submit(function(event){
event.preventDefault();
if(check_validity()){
console.log("valid");
return true;
} else {
console.log("invalid");
return false;
}
console.log("end of function");
});
现在check_validity()
是一项耗时的功能。它检查数据库中的数据,然后回复true或false。但是在检查有效性完成之前,上述函数似乎不等待check_validity
完成并运行else
语句。
我该如何解决这个问题?可能使用回调函数可以解决这个问题。但是如何使用回调接收返回值?
function check_validity(){
$.post("http://xxxx.com/check_if_user_exists",
{email: $("#contact_person_email").val()},
function(data){
if(parseInt(data) == 1)
return false;
else
return true;
});
}
答案 0 :(得分:1)
function check_validity(){
return $.post("http://xxxx.com/check_if_user_exists", {
email : $("#contact_person_email").val()
}).then(function(data) {
return parseInt(data, 10) != 1;
}); // end of post
} //end function
用法:
check_validity().done(function(valid) {
if (valid) {
// ...
}
});
但您仍然无法使用它来决定是否在true
中返回false
或submit()
。这对于异步调用来说是不可能的。