我有一个表单,在提交之前我想检查一些数据库的输入。想法:1)提交表格,2)检查值,3)显示错误或实际提交表格。例如:
$(form).submit(function() {
$.post('check.php', {
values
}, function(res) {
// result I need before submitting form or showing an error
});
return false;
});
现在,我得到结果需要一些时间(即不是立即),所以我在底部放入return false
,阻止表单提交,然后再返回$ .post结果有它的东西。
问题:在我从$ .post获得结果后,一切都结果没问题,我如何告诉脚本继续提交表单?如果我使用submit()
,它只会将其恢复到此检查脚本,从而创建无限循环。
有什么想法吗?提前谢谢,圣诞快乐!
答案 0 :(得分:1)
您可以使用布尔标志:
var isValid = false;
$(form).submit(function() {
if (isValid) return true;
$.post('check.php', {
values
}, function(res) {
if (res.valid) {
isValid = true;
$(form).submit();
}
// result I need before submitting form or showing an error
});
return false;
});
答案 1 :(得分:1)
如果你这样做的话,你实际上是在两次提交表格。这似乎很浪费。相反,只是阻止表单提交,并异步处理值(就像您现在一样)。从服务器接收数据,如果它是好的,如果不是,则拒绝它。如果您已经开始将数据发送到服务器,则无需提交表单。这有点多余。
答案 2 :(得分:1)
尝试使用包含onclick的链接替换提交按钮。之后以编程方式提交表单。 E.g:
<a id="submit">Submit</a>
$($("a#submit").click(function() {
$.post('check.php', {
values
}, function(res) {
// result I need before submitting form or showing an error
});
if (condition) {
$('[name=form_name]').submit();
};
});