return 语句在 ajax 响应之前执行

Nir*_*shi 3 javascript php forms ajax jquery

我正在对提交按钮单击事件进行 ajax 调用以检查字段验证服务器端。当我验证失败时,ajax 响应会给出正确的错误消息,返回 false,并停止表单提交到操作 url。但是当我收到“成功”的响应时,表单仍然没有提交到操作 url 脚本。

在ajax响应之前执行return语句是这种情况吗?

还有为什么没有提交表单?

这是代码:

<input type="submit" onclick="return validate();" name="submit" value="Proceed" />

<script type="text/javascript">
    var flag=false;
    function validate(){

        $.ajax({
            type:"POST",
            url:"../chk.php",
            data:datastring,
            cache: false,
            success: function (result) {


                if(result.toString() == "success" ){

                    flag=true;

                }

                else{
                    $('#error').css('display', 'block');
                    $('#error').css('color','red');
                    $('#error').text(result.toString());
                    flag=false;
                }
            }

        });


        return flag;
    }
</script>
Run Code Online (Sandbox Code Playgroud)

Kan*_*iya 6

一种方式是

async : false

将 async 设置为 false 意味着您正在调用的语句必须在调用函数中的下一个语句之前完成。

$.ajax({
            type:"POST",
            url:"../chk.php",
            data:datastring,
            cache: false,
            async : false,
            success: function (result) {
Run Code Online (Sandbox Code Playgroud)

还有为什么要返回ajax函数之外的值,如果不使用则返回ajax成功内的值 async : false

 $.ajax({
            type:"POST",
            url:"../chk.php",
            data:datastring,
            cache: false,
            success: function (result) {


                if(result.toString() == "success" ){

                    flag=true;

                }

                else{
                    $('#error').css('display', 'block');
                    $('#error').css('color','red');
                    $('#error').text(result.toString());
                    flag=false;
                }
            }

             return flag;

        });
Run Code Online (Sandbox Code Playgroud)