提交表单后jQuery检查问题
问题描述:
我有一个表单,在提交之前我想检查一些针对数据库的输入。这个想法:1)提交表格,2)检查值,3)显示错误或实际提交表格。例如:提交表单后jQuery检查问题
$(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()
,它会把它带回这个检查脚本,创建一个无限循环。
任何想法?在此先感谢和圣诞快乐!
答
你基本上提交表单的两倍,如果你这样做了。这似乎很浪费。相反,只是防止表单提交,并异步处理值(如你已经)。从服务器接收数据,如果不好的话拒绝。如果您已经将数据发送到服务器,则无需提交表单。这有点多余。
答
您可以使用布尔标志是:
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;
});
+0
没有太多的安全在。 – Sampson 2009-12-25 23:47:52
答
尝试使用具有onclick的链接替换提交按钮。之后以编程方式提交表单。例如: -
<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();
};
});
是的,好点。我想使用普通的帖子(不是异步的),因为页面需要在之后重新加载。但在这种情况发生之前我仍然需要反馈。但正如你所说,这是多余的。我想我应该在没有错误的情况下异步处理数据,然后从jQuery中重新加载页面 - 尽管这从来不是我最喜欢做的事情。 – Alec 2009-12-26 00:12:55
我明白你的困境,亚历克。但刷新一个页面似乎比发送同样的数据两次服务器更有意义:) – Sampson 2009-12-26 01:19:36