jquery的submit,当jquery validate的check failed时候,并不会将form的数据真正的submit。
而html的submit则,直接按照form的参数,将所有的数据进行submit。
code:
<?php
session_start();
if(isset($_SESSION['hit']))
{
$_SESSION['hit'] += 1;
echo "</br>hit + 1</br>";
}
else{
$_SESSION['hit'] = 0;
echo "</br>hit = 0</br>";
}
my_var_dump($_SESSION['hit'], 'hit');
my_var_dump($_POST, 'post');
function my_var_dump($dump_object, $object_name=null){
echo "</br> --------- $object_name --------- start </br>";
var_dump($dump_object);
echo "</br> --------- $object_name --------- end </br>";
}
?>
<html>
<head>
<script src="scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="scripts/jquery.validate.js" type="text/javascript"></script>
<script src="scripts/jquery-impromptu.4.0.js" type="text/javascript"></script>
<script type="text/javascript">
function submitLogin(){
//alert("submit");
$('#loginFormId').submit();
//document.getElementById('loginFormId').submit();
}
$().ready(function(){
$('#loginFormId').validate({
rules: {
user_name:{
required: true
},
user_password:{
required: true
}
},
messages:{
user_name:{
required: "<?php echo "user name is required."?>"
},
user_password:{
required: "<?php echo "password is required."?>"
}
},
errorPlacement: function(error,element) {
error.insertAfter(element);
}
});
});
</script>
<style type="text/css">
.full_screen{
width:100%;
float:left;
}
</style>
</head>
<body>
<form id="loginFormId" name="loginForm" method="post" action="index.php">
<div class="full_screen">
<label> User name:</label>
<input id="user_name" type="text" value="" name="user_name">
</div>
<div class="full_screen">
<label> Password:</label>
<input id="user_password" type="password" value="" name="user_password">
</div>
<button type="button" οnclick="submitLogin();">Submit</button>
</form>
</body>
</html>
原始界面载入如下:
在submitLogin函数中, 如果使用了 jquery方式的 $('#loginFormId').submit(); 来进行submit。
那么界面会显示如下:
可以看出,改变如下:
1. hit start 和 hit end中var_dump的内容没有变,post start和post end中var_dump的$_POST没有值
2. 在输入框User name, Password处输出 validate验证failed的错误信息。
可以看出,实际上页面没有重新导入index.php, 即submit操作没有完成
在submitLogin函数中, 如果使用了 html方式的document.getElementById('loginFormId').submit(); 来进行submit。
那么界面会显示如下:
可以看出,改变如下:
1. 输出了hit + 1的字样。
2. hit start 和 hit end中var_dump的内容改变了,
3. post start和post end中var_dump的$_POST有值输出。
可以看出,submit函数执行了,index.php页面被重新载入了。