我在验证表单后发送帖子数据有点问题。它不起作用,我不知道为什么。
这是我用于验证的jQuery函数:
(function($,W,D)
{
var jquery = {};
jquery.UTIL =
{
setupFormValidation: function()
{
$("#register").validate({
rules: {
-- rules--
},
messages: {
-- messages--
},
submitHandler: function(form) {
$.post('register.php', $(form).serialize(), function (data, textStatus) {
form.submit();
},'json');
}
});
}
}
$(D).ready(function($) {
jquery.UTIL.setupFormValidation();
});
})(jQuery, window, document);
所以我只想将名为:name,surname,email和password的数据发送到php页面。这不是我的验证(我刚刚发现了这个),所以也许它的错误呢?我知道发送帖子数据的代码应该在submitHandler
内,但我不知道在这种情况下应该怎么看。
如果有人需要,这是我的表格
<form id="register" method="post" action=""> <br><br>
<label for="name"></label><input placeholder="imię" type="text" name="name" id="name">
<input placeholder="nazwisko" type="text" name="surname" id="surname">
<input placeholder="e-mail" type="text" name="email" id="email">
<input placeholder="hasło" type="password" name="pass" id="pass">
<input placeholder="powtórz hasło" type="password" name="pass_confirm" id="pass_confirm">
<input type="submit" value="Załóż konto"/>
</form>
答案 0 :(得分:1)
submitHandler
仅在您希望根据插件覆盖默认表单操作时使用。
所以在你的代码中......
submitHandler: function(form) {
$.post('register.php', $(form).serialize(), function (data, textStatus) {
form.submit();
},'json');
}
我不明白为什么form.submit()
作为$.post()
内回调函数的一部分。 $.post()
是ajax,form.submit()
是标准表单提交(默认插件)。我的猜测是,你是盲目地跟随可怕的jQuery4U教程。
如果您只想执行ajax
,那么您的所有代码都可以缩减为此...
$(document).ready(function() {
$("#register").validate({
rules: {
//-- rules--
},
messages: {
//-- messages--
},
submitHandler: function(form) {
$.ajax({
url: 'register.php',
data: $(form).serialize(),
dataType: 'json'
});
return false;
}
});
});
否则,如果您只想按照<form>
元素的属性进行标准表单提交,那么您甚至不需要submitHandler
和所有代码可以浓缩成这个......
$(document).ready(function() {
$("#register").validate({
rules: {
//-- rules--
},
messages: {
//-- messages--
}
});
});
答案 1 :(得分:0)
这取决于您希望代码如何工作,是等待AJAX调用还是要在代码中发送表单
$.post('register.php', $(form).serialize(), function (data, textStatus) {
form.submit();
},'json');
此代码正在使用JQuery JQuery帖子发出一个AJAX帖子请求,如果你在提交表单的成功函数上有这个奇怪的部分。
因此,如果您想进行ajax调用,请确保您要提交表单或在通话后要执行的操作。如果您只想提交表单而不是ajax帖子,只需发送表单提交。
form.submit();
答案 2 :(得分:0)
好像你$.post()
submitHandler
中的$(form).submit()
是不必要的,只需简单地{{1}}即可。