ajax表单提交

        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="width: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="width: 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>

View Code

 注意:这里使用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 }

View Code

这里表单提交数据保存后,表单数据进行重置和清空处理,如果是对话框则进行关闭,并且重新加载数据,显示保存的数据。

删除中用到$.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 }

View Code