jsp页面经常要用到表单提交,表单提交我们见到的有两种,一种是ajax提交表单,一种是普通的表单提交。为什么会有两种形式,原因是ajax是异步提交的,而普通的是同步提交的。
那有什么区别呢,ajax通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
而传统普通的网页(不使用ajax)如果需要更新内容,必须重载整个网页页面。ajax应用场景表现在如:弹出的对话框,要提交表单数据,与后台进行交互,这样情况就用到ajax异步请求提交表单。
或者是某页面的某个div模块,需与后台进行数据交互,而整个页面不需跳转的情况下。这些场景下都使用ajax请求来提交表单。
使用ajax请求数据,实现方式有两种形式:
$.post(path,{data:data},function(data){ ... },"json");
或者
$.ajax({ url:"${pageContext.request.contextPath}/public/test", type:"post", data:{username:username}, success:function(data){ window.clearInterval(timer); console.log("over.."); }, error:function(e){ alert("错误!!"); window.clearInterval(timer); } });
下面给出例子代码:
form表单:
1 <div id="dlg" class="easyui-dialog" style="620px;height:250px;padding: 10px 20px" closed="true" buttons="#dlg-buttons"> 2 <form id="fm" method="post"> 3 <table cellspacing="8px"> 4 <tr> 5 <td>用户名:</td> 6 <td><input type="text" id="userName" name="userName" class="easyui-validatebox" required="true"/> <font color="red">*</font></td> 7 <td> </td> 8 <td>密码:</td> 9 <td><input type="text" id="password" name="password" class="easyui-validatebox" required="true"/> <font color="red">*</font></td> 10 </tr> 11 <tr> 12 <td>真实姓名:</td> 13 <td><input type="text" id="trueName" name="trueName" class="easyui-validatebox" required="true"/> <font color="red">*</font></td> 14 <td> </td> 15 <td>邮箱:</td> 16 <td><input type="text" id="email" name="email" class="easyui-validatebox" validType="email" required="true"/> <font color="red">*</font></td> 17 </tr> 18 <tr> 19 <td>联系电话:</td> 20 <td><input type="text" id="phone" name="phone" class="easyui-validatebox" required="true"/> <font color="red">*</font></td> 21 <td> </td> 22 <td>用户角色</td> 23 <td> 24 <select class="easyui-combobox" id="roleName" name="roleName" style=" 154px" editable="false" panelHeight="auto"> 25 <option value="">请选择角色...</option> 26 <option value="系统管理员">系统管理员</option> 27 <option value="销售主管">销售主管</option> 28 <option value="客户经理">客户经理</option> 29 <option value="高管">高管</option> 30 </select> 31 <font color="red">*</font> 32 </td> 33 </tr> 34 </table> 35 </form> 36 </div> 37 <div id="dlg-buttons"> 38 <a href="javascript:saveUser()" class="easyui-linkbutton" iconCls="icon-ok">保存</a> 39 <a href="javascript:closeUserDialog()" class="easyui-linkbutton" iconCls="icon-cancel">关闭</a> 40 </div>
注意:这里使用ajax提交表单,form元素的属性action去掉,method为post请求,加上id属性,用于找到指定的form提交。
如果form表单中有button, 提交按钮的button的type="submit"改为type="button"
提交形式:
$("#yourform").form("submit",{
url:url,
onSubmit:function(){
}, success :function(data){ //对结果处理 }
1 function saveUser() { 2 $("#fm").form("submit",{ 3 url:url, 4 onSubmit:function(){ 5 if($("#roleName").combobox("getValue")==""){ 6 $.messager.alert("系统提示","请选择用户角色!"); 7 return false; 8 } 9 return $(this).form("validate"); 10 }, 11 success:function(result){ 12 var result = eval('('+result+')'); 13 if(result.success){ 14 $.messager.alert("系统提示","保存成功!"); 15 resetValue(); 16 $("#dlg").dialog("close"); 17 $("#dg").datagrid("reload"); 18 }else{ 19 $.messager.alert("系统提示","保存失败!"); 20 return; 21 } 22 } 23 }); 24 }
这里表单提交数据保存后,表单数据进行重置和清空处理,如果是对话框则进行关闭,并且重新加载数据,显示保存的数据。
删除中用到$.post()请求形式。
1 function deleteUser() { 2 var selectedRows = $("#dg").datagrid("getSelections"); 3 if(selectedRows.length==0){ 4 $.messager.alert("系统提示","请选择要删除的数据!"); 5 return; 6 } 7 var strIds=[]; 8 for(var i=0;i<selectedRows.length;i++){ 9 strIds.push(selectedRows[i].id); 10 } 11 var ids= strIds.join(","); 12 $.messager.confirm("系统提示","您确定要删除这<font color=red>"+selectedRows.length+"</font>条数据吗?",function(r){ 13 if(r){ 14 $.post("${pageContext.request.contextPath}/user/delete.do",{ids:ids},function(result){ 15 if(result.success){ 16 $.messager.alert("系统提示","数据已成功删除!"); 17 $("#dg").datagrid("reload"); 18 }else{ 19 $.messager.alert("系统提示","数据删除失败,请联系系统管理员!"); 20 } 21 },"json") 22 } 23 }); 24 }