0

我的javascript函数有问题。我有一个注册表单,我在其中使用 jquery ajax 检查输入的用户名是否被另一个人使用(通过检查数据库)。按下提交按钮“validateMyForm()”后-我的javascript函数-被调用,我在其中验证输入。我的 jquery ajax 也在其中。(你可以在下面看到我的代码)。您知道,如果“validateMyForm()”函数的返回值为真,则发布表单(以正常方式不使用 ajax 方式)。如果输入的用户名与任何人都不匹配,我想发布我的表单,并且如果用户名被另一个用户使用,我不想发布。但是当我按下提交按钮时,该函数会跳过“$.post”部分并始终返回 true。你能帮助我吗?

我的 PHP 代码是:

<form method="post" action="signup.php" önsubmit="return validateMyForm();" id="formtag">
    <input id="username" name="username" class="input-text" type="text"/>
    <input type="submit" name="submit1" id="register" value="Register" />
</form>

我的javascript函数是:

function validateMyForm() {
    var returnedVal = true;
    //get username input text
    .
    .
    .
    $.post('ajax/checkUsername.php',{ username:username },function(data){
            //Checking that entered username is used by another person or no
            .
            .
            .
            if(is used by another)
                returnedVal= false;
            else
                ShowError;

    }, "json");

    return returnedVal;

}

4

1 回答 1

2

这是因为您进行了异步调用。所以true在服务器为后请求发送响应之前返回。

您必须在通话结束后使用回调函数或显示响应。

$("form").submit(function(event) {
    //validate your form here
    ...
    $.post("/ajax/checkUsername.php", {username: username}, function(data) {
        //check returned value and show response to the user
        ...
    });
    event.preventDefault();
    return false;
}
于 2013-07-15T21:07:25.960 回答