提交表单后jQuery检查问题

提交表单后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(),它会把它带回这个检查脚本,创建一个无限循环。

任何想法?在此先感谢和圣诞快乐!

你基本上提交表单的两倍,如果你这样做了。这似乎很浪费。相反,只是防止表单提交,并异步处理值(如你已经)。从服务器接收数据,如果不好的话拒绝。如果您已经将数据发送到服务器,则无需提交表单。这有点多余。

+0

是的,好点。我想使用普通的帖子(不是异步的),因为页面需要在之后重新加载。但在这种情况发生之前我仍然需要反馈。但正如你所说,这是多余的。我想我应该在没有错误的情况下异步处理数据,然后从jQuery中重新加载页面 - 尽管这从来不是我最喜欢做的事情。 – Alec 2009-12-26 00:12:55

+0

我明白你的困境,亚历克。但刷新一个页面似乎比发送同样的数据两次服务器更有意义:) – Sampson 2009-12-26 01:19:36

您可以使用布尔标志是:

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(); 
    }; 
});