jquery ajax onsubmit表单错误

时间:2017-03-16 05:36:20

标签: javascript php jquery ajax

我有一张下面给出的表格

    <form name="frm_dcg" id="frm_dcg" method="post" enctype="multipart/form-data" action="" onsubmit="return validate_form();" >
            <div class="login-form">
                <div class="sign-in-htm">
-----------other codes-------

和jquery函数

function validate_form(){
    var run_name = $("#run_name").val();        
        $.ajax({
            url: "check_folder.php",
            type: "POST",
            data: "run_name="+run_name,
            success: function (response) {
                if(response=="OK"){                     
                con = confirm("File already exists.. Do you want to replace existing file?");                               
                        if(con==true){
                            return true;
                        }else{
                            return false;
                        }
                } else{
                    return true;
                }
                return false;
            }
        });
}

ajax工作正常,但问题是表单在任何条件下提交。即使它返回假。请仔细阅读我的代码,如果有任何逻辑错误,请告诉我。

2 个答案:

答案 0 :(得分:1)

Ajax是一个异步函数,这意味着您在调用表单后调用return false

相反,您必须在validate_form()函数的末尾添加返回false。

function validate_form(){
    var run_name = $("#run_name").val();        
    ...
   return false; // <-- before the ending curly brace
}

请注意,表单应始终返回false。您可以验证run_name使用它来决定是否应该执行ajax请求。

function validate_form(){
    var run_name = $("#run_name").val(); 
    if (run_name.length > 5) { // just an example
        // do ajax request
    } else {
        // show invalid message
    }
    return false; // always false so the form doesn't submit.
}

答案 1 :(得分:0)

您将在成功结束中返回true / false结果。这不会传递给validate_form()。您在成功处理程序中也有一个逻辑错误,即使响应不是“正常”,也始终返回true。

您需要执行以下操作:

function validate_form(){
    var form_success = false; // Always fail by default

    var run_name = $("#run_name").val();
    $.ajax({
        url: "check_folder.php",
        type: "POST",
        data: "run_name="+run_name,
        success: function (response) {
            if (response == "OK"){                     
                form_success = confirm("File already exists.. Do you want to replace existing file?");                               
            }

            form_success = false;
        }
    });

    return form_success;
}