形成了OnSubmit等待jQuery的Ajax的回报?(Form OnSubmit to wait

2019-07-18 18:18发布

我想触发$.ajax对形式onsubmitreturn true只有阿贾克斯后的回报是什么有效的。

例如:

<form id="myForm" onsubmit="return ajaxValidation();">
    <input id="myString" name="myString" type="text" />
    <input type="submit" value="Submit" />
</form>

在Javascript:

function ajaxValidation() {
    $.ajax({
        async: false,
        type: "POST",
        url: "ajax.php",
        data: { myString: $("#myString").val() }
    }).success(function( response ) {
        alert(response); //Got 'ok'
        if (response=="ok") {
            return true; //mark-1
        } else {
            alert("Oh, string is wrong. Form Submit is cancelled.");
        }
    });
    return false; //mark-2
}

当我提出,我得到警报ok ,但它返回“错误的”,因为它上升到最终return false线。

为什么? 我不明白。 事实上,它应该命中return true线。 (而且,即使在return true ,函数应该停在那里,只是出来的吧)

所以,现在是指,母公司功能does NOT wait给Ajax返回。 相反,它是不断地向下运行结束。 任何想法,为什么,请。 如何使母公司的功能等着阿贾克斯?

Answer 1:

由于AJAX是异步您的验证会工作更好地使用提交按钮点击处理程序。

以下是基于拆下在线onSubmit

$(function() {

    var $form = $('#myForm');

    $form.find('input[type="submit"]').click(function() {
        $.ajax({
           /* async: false,  this is deprecated*/
            type: "POST",
            url: "ajax.php",
            data: {
                myString: $("#myString").val()
            }
        }).success(function(response) {
            alert(response); //Got 'ok'
            if(response == "ok") {
             /*  submit the form*/
                $form.submit();
            } else {
                alert("Oh, string is wrong. Form Submit is cancelled.");
            }
        }); /* prevent default when submit button clicked*/
        return false;

    });
});


Answer 2:

在标记1返回值是Ajax请求你的成功的功能,而不是你的验证功能。 因此,即使它返回它仅返回从那里,而不是从验证功能,这是标志2



文章来源: Form OnSubmit to wait jQuery Ajax Return?