0

我有一个简单的 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;
    });
} 
4

1 回答 1

1

使用jquery 延迟

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还是falsesubmit(). 异步调用是不可能的。

于 2013-06-27T01:50:34.713 回答