$('#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风格的新手,所以请让我知道如何做到这一点。
答案 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();
});
}
});