form的提交方式多了,不免会时常忘记,这里我总结了常见的表单提交的方法:
1.使用普通 button 按钮+onclick 事件+事件中编写代码:获取(通过任意选择器得到表单即可) 表单.submit();
<input type="button" onclick="getName1();" value="提交表单方法 1" />
input 的 type=button,调用 submit()方法提交
2. 使用 submit 按钮 + οnclick="return 函数()" +函数编写代码:最后必须返回: return true/false;
<input type="submit" onclick="return getName2();" value="提交表单方法 2" />
3.使用 submit 按钮/图片提交按钮 + 表单 οnsubmit="return 函数();" +函数编写代码:最后必须返回: return true|false;
<form name="form" action="跳转的页面" method="post" onsubmit="return getName3()">
<input type="text" id="name"/>
<input type="submit" value="提交"/> //注意onsubmit函数写在form表单上
</form>
<input type="image" src="图片的路径" width="60px" height="40px" />
下面为完整的调用流程:
<form id='myform1' name="myform2" action="#" method="get" onsubmit="return getName3();">
<!--通过 js 事件: sub()提交表单-->
<input type="button" onclick="getName1();" value="提交表单方法 1" />
<input type="submit" onclick="return getName();" value="提交表单 2" />
<input type="submit" value="提交 onsubmit" /><br />
<input type="image" src="路径" />
</form>
<script type="text/javascript">
//input 的 type=button,调用 submit()方法提交
function getName1(){
document.myform1.submit();
}
//进行校验,返回值为 true 才能提交
function getName2(){
var uname = document.getElementById("uname");
var val = uname.value;
if(val.length>0){
return true;//提交
}
return false; //不提交
}
//onsubmit 事件提交
function getName3 () {
var uname = document.getElementById("uname");
var val = uname.value;
if(val.length>0){
return true;//提交
}
return false; //不提交
}
</script>
4.ajax实现form提交方式
<form id="form1" onsubmit="return false" action="#" method="post">
<p>用户名:<input name="userName" type="text" id="txtUserName" value=""/></p>
<p>密 码:<input name="password" type="password" id="TextBox2" value=""/></p>
<p><input type="button" value="登录" onclick="login()">
<input type="reset" value="重置"></p>
</form>
<script type="text/javascript">
function login() {
$.ajax({
//几个参数需要注意一下
type: "POST",//方法类型
dataType: "json",//预期服务器返回的数据类型
url: "/users/login" ,//url,请求的路径
data: $('#form1').serialize(),
success: function (result) {
console.log(result);//打印服务端返回的数据(调试用)
if (result.resultCode == 200) {
alert("SUCCESS");
}
;
},
error : function() {
alert("异常!");
}
});
}
</script>
5.小结一下
(1)ajax在提交、请求、接收时,都是异步进行,网页不需要刷新,只刷新页面局部,不关心也不影响页面其他部分的内容。 Form提交则是新建一个页面,哪怕是提交给自己本身的页面,也需要刷新,为了维持页面用户对表单的状态改变,要在控制器和模板之间传递更多参数以保持页面状态。
(2)ajax提交时,是在后台新建一个请求。 Form却是放弃本页面,然后再请求。
(3)ajax必须要用js来实现,存在调试麻烦、浏览器兼容问题,而且不启用js的浏览器,无法完成操作。 Form表单是浏览器自带的,无论是否开启js,都可以提交表单。
(4)ajax在提交、请求、接收时,整个过程都需要使用程序来对其进行数据处理。 Form表单提交,是根据表单结构自动完成,不需要代码干预。用submit提交。
6.附加一种提交到后台的方法
<form id="myform" class="form-horizontal" method="post" action="user" >
<input type="hidden" name="action" value="updateInfo">
<label for="img" class="col-sm-2 control-label">头像:</label>
<div class="col-sm-5">
<input type="file" id="img" name="img">
</div>
<label for="mood" class="col-sm-2 control-label">心情:</label>
<textarea class="form-control" name="mood" id="mood" rows="3">
${user.mood }
</textarea>
<button type="submit" id="btn" class="btn btn-success">修改</button>
<span style="color:red" id="msg">${resultInfo.msg }</span>
</form>
上面程序点击修改是会提交到user的servlet那里,隐藏域的值也随之传了过去.