提交表单而不等待AJAX​​响应

时间:2013-06-14 20:07:05

标签: jquery ajax

$('#form1').submit(function () {
    var filal = $('input#l_email').val().length && $('input#l_pswd').val().length;
    if (!(filal)) {
        $("div#login_feed").fadeIn(400);
        return false;
    } else {
        alert('hello')
        $.post('create_login.php', {
            lemail: $('input#email').val(),
            lpswd: $('input#pswd').val()
        }, function (result) {
            if (result == 'sucess') return true;
            else return false;
        });
    }
});

我无法找到错误的位置。如果它进入if块,它将不会提交表格,但我不知道出了什么问题。当它进入else块时,它会发出hello警告并自动提交表单而不等待AJAX​​请求的完成。我知道代码令人毛骨悚然,也可能会返回语句,但我是jQuery风格的新手,所以请让我知道如何做到这一点。

3 个答案:

答案 0 :(得分:2)

你不能退出异步回调,原因如下:

var x = setTimeout(function(){
    return "foobar";
},1000)
alert(x); // the id of the settimeout instead of "foobar"

你的ajax请求也会发生同样的事情。

var foo = (function(){
    $.post("foo.php",function(){
        return "foobar";
    })
})();
alert(foo); // undefined because your function didn't return anything!!

在您的情况下,您需要完全停止默认操作,然后在ajax请求后提交表单。

$('#form1').submit(function (e) {
    e.preventDefault(); // stop default action
    var theform = this;
    var filal = $('input#l_email').val().length && $('input#l_pswd').val().length;
    if (!(filal)) {
        $("div#login_feed").fadeIn(400);
        return false;
    } else {
        alert('hello')
        $.post('create_login.php', {
            lemail: $('input#email').val(),
            lpswd: $('input#pswd').val()
        }, function (result) {
            if (result == 'sucess') theform.submit(); // submit form, bypassing jQuery bound submit handler to prevent infinite loop
        });
    }
});

请修复你的拼写错误。拼错的单词会在以后受到伤害。

答案 1 :(得分:1)

提交操作默认发送表单,您需要使用preventDefault();

停止该操作
$('#form1').submit(function (event) {
  event.preventDefault();

答案 2 :(得分:0)

$('#form1').submit(function (event) {
    event.preventDefault();
    var filal = $('#l_email').val().length && $('#l_pswd').val().length;
    if (!(filal)) {
        $("div#login_feed").fadeIn(400);
    } else {
        $.post('create_login.php', {
            lemail: $('#email').val(),
            lpswd: $('#pswd').val()
        }, function (result) {
            if (result == 'sucess')
                $('#form1').get().submit();

        });
    }
});