• 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="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"/>&nbsp;<font color="red">*</font></td>
     7                  <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
     8                  <td>密码:</td>
     9                  <td><input type="text" id="password" name="password" class="easyui-validatebox" required="true"/>&nbsp;<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"/>&nbsp;<font color="red">*</font></td>
    14                  <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
    15                    <td>邮箱:</td>
    16                    <td><input type="text" id="email" name="email" class="easyui-validatebox" validType="email" required="true"/>&nbsp;<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"/>&nbsp;<font color="red">*</font></td>
    21                    <td>&nbsp;&nbsp;&nbsp;&nbsp;</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                        &nbsp;<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
  • 相关阅读:
    UVa 439,Knight Moves
    UVa127,"Accordian" Patience
    UVa11882,Biggest Number
    UVa1599,Ideal Path
    我什么时候才能脱离题解....
    UVa208,Firetruck
    UVa1600,Patrol Robot
    UVa12325, Zombie's Treasure Chest
    随笔
    UVa11054
  • 原文地址:https://www.cnblogs.com/jedjia/p/ajax.html
Copyright © 2020-2023  润新知