Mar*_*iaZ 0 php ajax jquery jquery-validate .post
我在执行以下代码时遇到一些问题.
代码提交但它没有做任何事情,它回到同一个屏幕,似乎表单的值没有被提交.
<script type="text/javascript">
$(document).ready(function(){
$("#signin_form").validate({
debug: false,
rules: {
///
},
messages: {
///
},
submitHandler: function(form) {
var result;
$.post('test.php', $('#signin_form').serialize(), function(data){
result = $.parseJSON(data);
if (result.flag == 'false'){
$('#results').show()
}
})
.success(function(data){
if (result.flag == 'true'){
form.submit();
}
}, 'json');
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)如果我将代码改为以下,它可以工作,它需要我到正确的屏幕,但我需要验证,验证码,我不知道它是否是正确的地方,我尝试使用beforeSubmit但然后验证码未经验证.
<script type="text/javascript">
$(document).ready(function(){
$("#signin_form").validate({
debug: false,
rules: {
///
},
messages: {
///
},
submitHandler: function(form) {
form.submit();
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)有一些关于$ .post的东西,我不反感...并且没有提交信息.
有谁知道它可能是什么?谢谢!
form在这种情况下,您不需要更改提交的方式,以验证验证码,使用remote函数jquery.validate.
remote使用时遇到一些问题jquery.validate.检查您是否执行了以下操作:
1)确保您仅使用jQuery 1.6.1及更高版本.
2)使用"同步"选项进行远程执行(默认为异步)并将此async参数设置为false.
假设这是我的表格......
HTML:
添加id和name属性到所有表单元素或只是验证码(这个必须两者都有).
<form id="signin_form" action="save.php" method="POST">
Enter captcha: O1S2C3A4R
<br/>
<input type="text" id="captcha" name="captcha" value=""/>
<input type="submit" id="save" name="save" value="Save"/>
</form>
Run Code Online (Sandbox Code Playgroud)
jQuery的:
添加type,async和data论据.最后一个参数将captcha值传递给check.php文件,这就是该元素需要该id属性的原因.然后你就可以使用这个选择器了$('#captcha').
(对我来说这是更好的,但你也可以使用其他选择器类型按名称调用元素)
要知道,您还需要为此定义错误消息remote,在本例中我使用了无效的验证码.
$(document).ready(function(){
$("#signin_form").validate({
rules: {
captcha: {
required: true,
remote: {
url:"check.php",
type:"post",
async:false,
data: {
/* this is the name of the post parameter that PHP will use: $_POST['captcha'] */
captcha: function() {
return $.trim($("#captcha").val());
}
}
}
}
},
messages: {
captcha: {
required: "*",
remote: "Invalid captcha"
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
PHP:check.php
此时,如果验证码有效,使用"true"或"false"作为字符串来了解jquery.validation插件是很重要的.在这种情况下,如果验证码等于O1S2C3A4R则有效,并且在客户端,您将看到submit将处理html 属性中指定的formto save.php文件form action.
<?php
$captcha = $_POST['captcha'];
if($captcha == "O1S2C3A4R"){
echo "true";
} else {
echo "false";
}
?>
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以form毫无问题地验证整体并远程检查验证码值,而无需更改插件功能.
你也可以一起测试所有这些代码,看看它是否有效:-)
希望这可以帮助.