SSM框架AJAX分页 PageHelper查询,增删改 前端业务逻辑

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- web路径:
不以/开始的相对路径,找资源,以当前资源的路径为基准,经常容易出问题。
以/开始的相对路径,找资源,以服务器的路径为标准(http://localhost:3306);需要加上项目名
    http://localhost:3306/wolf-crud
 -->
 <% 
    pageContext.setAttribute("APP_PATH", request.getContextPath());
 %>
<script type="text/javascript" src="${APP_PATH }/static/js/jquery-1.12.4.js"></script>
<link href="${APP_PATH }/static/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">
<script src="${APP_PATH }/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>

<title>员工列表(AjAX请求后台数据)</title>
</head>
<body>
    <!--员工修改模态框  -->
    <!-- Modal -->
    <div class="modal fade" id="empUpdateModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title">员工修改</h4>
          </div>
          <!--表单内容  -->
          <div class="modal-body">
            <form class="form-horizontal">
              <div class="form-group">
                <label for="empName_update_input" class="col-sm-2 control-label">员工姓名</label>
                <div class="col-sm-10">
                 <p class="form-control-static" id="empName_update_static"></p>
                 <!--  <input type="text" class="form-control" name="empName" id="empName_update_input" placeholder="empName"> -->
                  <span class="help-block"></span>
                </div>
              </div>

              <div class="form-group">
                <label for="email_update_input" class="col-sm-2 control-label">电子邮箱</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" name="email" id="email_update_input" placeholder="[email protected]">
                    <span class="help-block"></span>
                </div>
              </div>

              <div class="form-group">
                <label class="col-sm-2 control-label">员工性别</label>
                <div class="col-sm-10">
                    <label class="radio-inline">
                      <input type="radio" name="gender" id="gender1_update_input" value="M" checked="checked"></label>
                    <label class="radio-inline">
                      <input type="radio" name="gender" id="gender2_update_input" value="F"></label>
                </div>
              </div>

              <div class="form-group">
                <label class="col-sm-2 control-label">所属部门</label>
                <div class="col-sm-4">
                    <select class="form-control" name="dId" id="dept_update_select">

                    </select>
                </div>
              </div>

            </form>
          </div>
          <!--表单内容结束  -->
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
            <button type="button" class="btn btn-primary" id="emp_update_btn">更新</button>
          </div>
        </div>
      </div>
    </div>


    <!--员工添加模态框  -->
    <!-- Modal -->
    <div class="modal fade" id="empAddModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="myModalLabel">员工添加</h4>
          </div>
          <!--表单内容  -->
          <div class="modal-body">
            <form class="form-horizontal">
              <div class="form-group">
                <label for="empName_add_input" class="col-sm-2 control-label">员工姓名</label>
                <div class="col-sm-10">
                  <input type="text" class="form-control" name="empName" id="empName_add_input" placeholder="empName">
                  <span class="help-block"></span>
                </div>
              </div>

              <div class="form-group">
                <label for="email_add_input" class="col-sm-2 control-label">电子邮箱</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" name="email" id="email_add_input" placeholder="[email protected]">
                    <span class="help-block"></span>
                </div>
              </div>

              <div class="form-group">
                <label class="col-sm-2 control-label">员工性别</label>
                <div class="col-sm-10">
                    <label class="radio-inline">
                      <input type="radio" name="gender" id="gender1_add_input" value="M" checked="checked"></label>
                    <label class="radio-inline">
                      <input type="radio" name="gender" id="gender2_add_input" value="F"></label>
                </div>
              </div>

              <div class="form-group">
                <label class="col-sm-2 control-label">所属部门</label>
                <div class="col-sm-4">
                    <select class="form-control" name="dId" id="dept_add_select">

                    </select>
                </div>
              </div>

            </form>
          </div>
          <!--表单内容结束  -->
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
            <button type="button" class="btn btn-primary" id="emp_save_btn">保存</button>
          </div>
        </div>
      </div>
    </div>


    <div class="container">
        <!--标题  -->
        <div class="row">
            <div class="col-md-12">
                <h1>SSM增删改查实例</h1>
            </div>
        </div>
        <!--按钮  -->
        <div class="row">
            <div class="col-md-4 col-md-offset-8">
                <button class="btn btn-primary" id="emp_add_model_btn">新增</button>
                <button class="btn btn-danger" id="emp_delete_all_btn">删除</button>
            </div>
        </div>
        <!--显示表格数据  -->
        <div class="row">
            <div class="col-md-12">
                <table class="table table-hover" id="emps_table">
                    <!--表格头  -->
                    <thead>
                        <tr>
                            <th>
                                <input type="checkbox" id="check_all"/>
                            </th>
                            <th>员工ID</th>
                            <th>员工姓名</th>
                            <th>员工性别</th>
                            <th>邮箱地址</th>
                            <th>部门名称</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <!--表格体  -->
                    <tbody></tbody>
                </table>
            </div>
        </div>
        <!--显示分页信息  -->
        <div class="row">
            <!--分页文字信息  -->
            <div class="col-md-6" id="page_info_area">
                <!-- 当前页,总页,总条记录 -->
            </div>
            <!--分页条信息  -->
            <div class="col-md-6" id="page_nav_area">

            </div>
        </div>
    </div>
    <script type="text/javascript">
        //定义全局变量,总记录数
        var totalRecord,currentPage;
        //页面加载完成以后,直接去发送ajax请求,要到分页数据
        $(function(){
            //页面加载完默认进首页
            to_page(1); 
        });
        //点击页面时,实现页码跳转
        function to_page(pn){
            $.ajax({
                url:"${APP_PATH}/empwithdeptjson",
                data:"pn="+pn,//pn是用户指定跳转的页码数
                type:"post",
                //请求成功的回调函数,result是服务器响应给浏览器的数据
                success:function(result){
                    //console.log(result);//需要在浏览器的控制台中查看
                    //1.解析并显示员工数据
                    build_emps_table(result);
                    //2.解析并显示分页信息
                    build_page_info(result);
                    //3.解析显示分页条
                    build_page_nav(result);
                }
            });
        }

        function build_emps_table(result){
            //清空table表格
            $("#emps_table tbody").empty();
            //获取json串中返回的结果集(库表中的数据)
            var emps=result.extend.pageInfo.list;
            //循环遍历结果集==>循环遍历所有员工数据
            //参数1:要遍历的emps集合,参数2:每次遍历的回调函数
            //回调函数:参数1:索引,参数2:当前对象
            $.each(emps,function(index,item){
                //alert(item.empName);
                //把解析的数据放到表格中展示,以下的DOM解析表格
                var checkBoxTd=$("<td><input type='checkbox' class='check_item'></td>")
                var empIdTd=$("<td></td>").append(item.empId);
                var empNameTd=$("<td></td>").append(item.empName);
                //var gender=item.gender=='M'?"男":"女";
                var genderTd=$("<td></td>").append(item.gender=='M'?"男":"女");
                var emailTd=$("<td></td>").append(item.email);
                var deptNameTd=$("<td></td>").append(item.department.deptName);
                /*
                <button class="btn btn-primary btn-sm"> 
                    <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>&nbsp;编辑
                </button>
                <button class="btn btn-danger btn-sm"> 
                    <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>&nbsp;删除
                </button>
                */
                var editBtn=$("<button></button>").addClass("btn btn-primary btn-sm edit_btn")
                    .append($("<span></span>").addClass("glyphicon glyphicon-pencil")).append("&nbsp;").append("编辑");
                //为编辑按钮添加一个自定义的属性,来表示当前员工id
                editBtn.attr("edit-id",item.empId);
                var delBtn=$("<button></button>").addClass("btn btn-danger btn-sm delete_btn")
                    .append($("<span></span>").addClass("glyphicon glyphicon-trash")).append("&nbsp;").append("删除");
                //为删除按钮添加一个自定义的属性,来表示当前删除的员工id
                delBtn.attr("del-id",item.empId);
                var btnTd=$("<td></td>").append(editBtn).append("&nbsp;").append(delBtn);
                //append方法执行完成以后还是返回原来的元素
                $("<tr></tr>").append(checkBoxTd).append(empIdTd).append(empNameTd)
                    .append(genderTd)
                    .append(emailTd)
                    .append(deptNameTd)
                    .append(btnTd)
                    .appendTo("#emps_table tbody");
            });
        }
        //解析显示分页信息
        function build_page_info(result){
            //清空分页信息
            $("#page_info_area").empty();
            $("#page_info_area").append("当前"+result.extend.pageInfo.pageNum+"页,总"+
                    result.extend.pageInfo.pages+"页,总"+
                    result.extend.pageInfo.total+"条记录");
            totalRecord=result.extend.pageInfo.total;
            currentPage=result.extend.pageInfo.pageNum;
        }
        /*  
            <nav aria-label="Page navigation">
              <ul class="pagination">
                <li>
                  <a href="#" aria-label="Previous">
                    <span aria-hidden="true">&laquo;</span>
                  </a>
                </li>
                <li><a href="#">1</a></li>
                <li><a href="#">2</a></li>
                <li><a href="#">3</a></li>
                <li><a href="#">4</a></li>
                <li><a href="#">5</a></li>
                <li>
                  <a href="#" aria-label="Next">
                    <span aria-hidden="true">&raquo;</span>
                  </a>
                </li>
              </ul>
            </nav>
        */
        //解析显示分页条
        function build_page_nav(result){
            //清空分页导航
            $("#page_nav_area").empty();
            //page_nav_area
            //创建ul
            var ul=$("<ul></ul>").addClass("pagination");
            //首页
            var firstPageLi=$("<li></li>").append($("<a></a>").append("首页").attr("href","#"));
            //前一页
            var prePageLi=$("<li></li>").append($("<a></a>").append($("<span></span>").append("&laquo;")));
            //如果没有了前一页,首页和前一页按钮不可用
            if(result.extend.pageInfo.hasPreviousPage==false){
                firstPageLi.addClass("disabled");
                prePageLi.addClass("disabled");

            }
            //为元素添加点击翻页事件
            //首页单击事件
            firstPageLi.click(function(){
                to_page(1);
            });
            //上一页单击事件:当前页-1
            prePageLi.click(function(){
                to_page(result.extend.pageInfo.pageNum-1);
            });

            //后一页
            var nextPageLi=$("<li></li>").append($("<a></a>").append($("<span></span>").append("&raquo;")));
            //末页
            var lastPageLi=$("<li></li>").append($("<a></a>").append("末页").attr("href","#"));
            //如果没有了下一页,末页和下一页按钮不可用
            if(result.extend.pageInfo.hasNextPage==false){
                nextPageLi.addClass("disabled");
                lastPageLi.addClass("disabled");

            }
            //下一页的单击事件:当前页+1
            nextPageLi.click(function(){
                to_page(result.extend.pageInfo.pageNum+1);
            });
            lastPageLi.click(function(){
                to_page(result.extend.pageInfo.pages);
            });


            //添加首页和前一页的提示
            ul.append(firstPageLi).append(prePageLi);
            //循环遍历给ul中添加页码提示,取出页码号 1,2,3,4,5,
            $.each(result.extend.pageInfo.navigatepageNums,function(index,item){
                var numLi=$("<li></li>").append($("<a></a>").append(item));
                //如果当前页码等于正在循环遍历的页码,则页码变色
                if(result.extend.pageInfo.pageNum==item){
                    numLi.addClass("active");
                }
                //给页码添加单击事件
                numLi.click(function(){
                    to_page(item);
                });
                ul.append(numLi);
            });
            //添加下一页和末页的提示
            ul.append(nextPageLi).append(lastPageLi);
            //创建nav,将ul标签添加到nav标签中
            var nav=$("<nav></nav>").append(ul); 
            //将分页条添加到上面id中
            nav.appendTo("#page_nav_area");
        }


        // 清除表单数据(表单重置--表单的数据,表单的样式)
        function reset_form(ele){
            $(ele)[0].reset();//清空表单数据,防止再次打开模态框时,带有之前添加的的数据
            //清空模态框表单中上次残留的样式
            $(ele).find("*").removeClass("has-error has-success");
            $(ele).find(".help-block").text("");
        } 


        //点击新增按钮弹出模态框
        $("#emp_add_model_btn").click(function(){
            //1.清除表单数据(表单重置--表单的数据,表单的样式),获取表单,jquery没有reset()方法,需要转成原生对象
            // $("#empAddModal form")[0].reset(); -->统一写一个函数,见上面
            reset_form("#empAddModal form");
            //2.发送ajax请求,查出部门信息,显示在下拉列表中
            getDepts("#dept_add_select");
            //3.弹出模态框
            $("#empAddModal").modal({
                backdrop:"static"
            });
        });
        //查出所有部门信息,显示在下拉列表中
        function getDepts(ele){
            $(ele).empty(); //$("#dept_add_select").empty();
            $.ajax({
                //向后台发送请求
                url:"${APP_PATH}/depts",
                type:"GET",
                //拿到请求查询的结果result
                success:function(result){
                    //console.log(result) 
                    //{"code":100,"msg":"处理成功","extend":{"depts":[{"deptId":1,"deptName":"开发部"},{"deptId":2,"deptName":"测试部"}]}}
                    //显示部门信息到下拉列表中,有2种获取下拉列表的方式
                    //$("#empAddModal select")
                    //$("#dept_add_select")
                    //循环遍历部门信息
                    $.each(result.extend.depts,function(){
                        var optionEle=$("<option></option>").append(this.deptName).attr("value",this.deptId);
                        optionEle.appendTo(ele);
                    })
                }
            });
        }
        //前端校验:校验表单数据
        function validate_add_form(){
            //1.拿到要校验的数据(通过id获取),使用正则表达式
            var empName=$("#empName_add_input").val();//获取文本框的值
            var regName=/(^[a-zA-Z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5})/;
            // alert(regName.test(empName));
            if(!regName.test(empName)){//如果校验失败
                //alert("用户名可以是2-5位中文或者6-16位英文和数字的组合");
                // 给input文本框的父元素添加提示样式,文本框变色
                show_validate_msg("#empName_add_input","error","用户名可以是2-5位中文或者6-16位英文和数字的组合");

                return false; //校验失败,返回false不在向下执行
            }else{
                show_validate_msg("#empName_add_input","success","");
                //$("#empName_add_input").parent().addClass("has-success");
                //$("#empName_add_input").next("span").text("");
            }
            //2.校验邮箱
            var email=$("#email_add_input").val();//获取邮箱的文本框的值
            var regEmail=/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/;
            if(!regEmail.test(email)){
                //alert("邮箱格式不正确");
                //应该清空这个元素之前的样式
                show_validate_msg("#email_add_input","error","邮箱格式不正确");
                //$("#email_add_input").parent().addClass("has-error");
                //$("#email_add_input").next("span").text("邮箱格式不正确");
                return false;
            }else{
                show_validate_msg("#email_add_input","success","");
                //$("#email_add_input").parent().addClass("has-success");
                //$("#email_add_input").next("span").text("");
            }
            return true;
        } 
        //显示校验结果的提示信息模板
        function show_validate_msg(ele,status,msg){
            //清除当前元素的校验状态
            $(ele).parent().removeClass("has-success has-error");
            $(ele).next("span").text("");
            if("success"==status){
                $(ele).parent().addClass("has-success");
                $(ele).next("span").text(msg);
            }else if("error"==status){
                $(ele).parent().addClass("has-error");
                //获取当前输入框元素的下一个元素span,将span元素的文本值设置成提示信息
                $(ele).next("span").text(msg);
            }
        }
        //绑定文本框改变事件:当文本框里面的内容发生改变以后,检验用户名是否可用
        $("#empName_add_input").change(function(){
            var empName=this.value;
            //alert("*****"+empName);
            //var empName=$("#empName_add_input").val();
            //发送ajax请求校验用户名是否可用
            $.ajax({
                url:"${APP_PATH}/checkuser",
                type:"POST",
                data:"empName="+empName,
                dataType:"json",
                success:function(result){
                    if(result.code==100){
                        $("#emp_save_btn").attr("ajax-va","success");
                        show_validate_msg("#empName_add_input","success","用户名可用");
                    }else{
                        show_validate_msg("#empName_add_input","error",result.extend.va_msg);//result.extend.va_msg:获取后台数据 --该用户名不可以使用
                        $("#emp_save_btn").attr("ajax-va","error");
                    }
                }
            });
        });
        //保存按钮的单击事件,实现点击按钮保存员工数据
        $("#emp_save_btn").click(function(){
            //模态框中填写的表单数据提交给服务器进行保存
            //1.先要对提交给服务器的数据进行校验,前端校验,注释掉可以测试后端JSR303校验
            if(!validate_add_form()){
                return false;
            }; 
            //判断之前的ajax用户名校验是否成功,如果用户名已存在,则保存按钮不可用
            //获取当前按钮的属性值
            if($("#emp_save_btn").attr("ajax-va")=="error"){
                return false;
            }

            //2.发送ajax请求保存员工,serialize()序列表表格内容为字符串,用于Ajax请求
            //获取表单,并将表单序列化empName=%E5%AD%9D%E6%B8%85&email=xiaoqing%40163.com&gender=F&dId=2
            //alert($("#empAddModal form").serialize());
            $.ajax({
                url:"${APP_PATH}/emp",
                type:"POST",
                data:$("#empAddModal form").serialize(), 
                success:function(result){
                    //{"code":100,"msg":"处理成功","extend":{"depts":[{"deptId":1,"deptName":"开发部"},{"deptId":2,"deptName":"测试部"}]}}
                    // alert(result.msg);
                    if(result.code==100){
                        // 员工保存成功后:
                        // 1.关闭模态框
                        $('#empAddModal').modal('hide');
                        // 2、来到最后一页,显示刚才保存的数据
                        //发送ajax请求,显示最后一页数据即可
                        to_page(totalRecord);
                    }else{
                        //JSR303后端校验失败,显示失败信息
                        console.log(result);//Objectcode: 200 extend: Objectmsg: "处理失败"__proto__: Object
                        //有那个字段的错误信息就显示那个字段的信息
                        alert(result.extend.errorFields.email);
                        alert(result.extend.errorFields.empName);
                        if(undefined!=result.extend.errorFields.email){
                            //显示邮箱错误信息
                            show_validate_msg("#email_add_input","error",result.extend.errorFields.email);
                        }
                        if(undefined!=result.extend.errorFields.empName){
                            //显示员工名字的错误信息
                            show_validate_msg("#empName_add_input","error",result.extend.errorFields.empName);
                        }
                    }

                }
            }) 
        });

        // 给jquery动态创建的编辑按钮绑定事件,没有id属性的按钮,给class属性的一个值绑定单击事件
        $(document).on("click",".edit_btn",function(){
            //alert("绑定单击事件");

            //1.查出部门信息,并显示部门列表
            getDepts("#dept_update_select")  //getDepts("#empUpdateModal select")
            //2.查出员工信息,显示员工信息
            //getEmp(id);//?如何获取每一个编辑按钮的员工id-->editBtn.attr("edit-id",item.empId);
            getEmp($(this).attr("edit-id"));   //this代表当前被点击的按钮
            //3.把员工id传递给模态框的更新按钮
            $("#emp_update_btn").attr("edit-id",$(this).attr("edit-id"));
            //4.弹出模态框
            $("#empUpdateModal").modal({
                backdrop:"static"
            });
        })
        //查出员工信息,显示员工信息
        function getEmp(id){
            $.ajax({
                url:"${APP_PATH}/emp/"+id, //@RequestMapping(value="/emp/{id}",method=RequestMethod.GET)
                type:"GET",
                success:function(result){
                    //console.log(result);
                    //获取到服务端返回的所有员工数据
                    var empData=result.extend.emp;
                    $("#empName_update_static").text(empData.empName);//给p标签之类的赋值用text()属性
                    $("#email_update_input").val(empData.email);//给文本框赋值用val()属性
                    // 获取 单选按钮的方法 有多种 $("#empUpdateModa input[name=gender]")
                    $("#empUpdateModal input[type=radio]").val([empData.gender]); 
                    //给下拉列表赋值
                    $("#empUpdateModal select").val([empData.dId]);
                }
            })
        }
        //修改:给更新按钮绑定单击事件
        $("#emp_update_btn").click(function(){
            //1.验证邮箱是否合法
            var email=$("#email_update_input").val();//获取邮箱的文本框的值
            var regEmail=/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/;
            if(!regEmail.test(email)){
                //alert("邮箱格式不正确");
                //应该清空这个元素之前的样式
                show_validate_msg("email_update_input","error","邮箱格式不正确");
                //$("#email_add_input").parent().addClass("has-error");
                //$("#email_add_input").next("span").text("邮箱格式不正确");
                return false;
            }else{
                show_validate_msg("#email_update_input","success","");
                //$("#email_add_input").parent().addClass("has-success");
                //$("#email_add_input").next("span").text("");
            }
            //2.发送ajax数据,保存修改的数据
            $.ajax({
                //如何获取页面的员工id-->把员工id的值绑定到更新按钮上
                url:"${APP_PATH}/emp/"+$(this).attr("edit-id"),
                type:"PUT",  //<filter-name>HttpPutFormContentFilter</filter-name>
                data:$("#empUpdateModal form").serialize(),
                //type:"POST",
                //data:$("#empUpdateModal form").serialize()+"&_method=PUT",
                success:function(result){
                    //console.log(result);
                    //alert(result.msg);
                    //关闭模态框
                    $("#empUpdateModal").modal("hide");
                    //回到本页面,如何做到-->全局变量:currentPage
                    to_page(currentPage);
                }
            });
        });

        //单个删除:给jquery动态创建的删除按钮绑定事件,没有id属性的按钮,给class属性的一个值绑定单击事件
        $(document).on("click",".delete_btn",function(){
            //1.弹出是否确认删除对话框
            //(1)如何获取员工姓名:获取当前按钮的所有祖先节点,在找第二个<td>
            //alert($(this).parents("tr").find("td:eq(1)").text());
            var empName=$(this).parents("tr").find("td:eq(2)").text();
            var empId=$(this).attr("del-id");
            if(confirm("确认删除【"+empName+"】吗?")){
                //确认,发送ajax请求删除即可
                $.ajax({
                    //给删除按钮绑定id
                    url:"${APP_PATH}/emp/"+empId,
                    type:"DELETE",
                    success:function(result){
                        //alert(result.msg);
                        //回到本页
                        to_page(currentPage);
                    }
                });
            }
        });
        //完成全选/全不选的事件功能
        $("#check_all").click(function(){
            //attr获取checked是undefined;
            //我们这些dom原生的属性比如checked,我们用prop()获取原生的属性值,而attr获取自定义属性的值
            //prop修改和读取dom原生属性值
            //alert($(this).prop("checked"));
            //选中标题行的复选框,下面的复选框跟着一起选中
            $(".check_item").prop("checked",$(this).prop("checked"));
        });

        //全部选中表格体中的复选框时,上面标题中的复选框也跟着选中
        $(document).on("click",".check_item",function(){
              //alert($(".check_item:checked").length);
            var flag = $(".check_item:checked").length==$(".check_item").length;
            $("#check_all").prop("checked",flag);
        }); 
    //批量删除的单击事件
    $("#emp_delete_all_btn").click(function(){
        var empNames ="";
        var del_idstr ="";
        //先找到被选中的复选框,然后循环遍历
        $.each($(".check_item:checked"),function(){
            //this代表当前被循环到的复选框,打印所有选中的员工姓名
            //alert($(this).parents("tr").find("td:eq(2)").text());
            empNames+=$(this).parents("tr").find("td:eq(2)").text() +",";   
            //组装员工id的字符串
            del_idstr+=$(this).parents("tr").find("td:eq(1)").text() +"-";
        });
        //去除empNames多余的逗号,
        empNames=empNames.substring(0,empNames.length-1);
        //去除del_idstr对于的“-”
        del_idstr=del_idstr.substring(0,empNames.length-1);
        if(confirm("确认删除【"+empNames+"】吗?")){
            //为true时,确认删除name的值,发送ajax请求
            $.ajax({
                url:"${APP_PATH}/emp/"+del_idstr,
                type:"DELETE",
                success:function(result){
                    alert(result.msg);
                    //回到当前页面
                    to_page(currentPage);
                }
            })
        }
    });
    </script>
</body>
</html>

附后端业务逻辑

SSM框架AJAX分页 PageHelper查询,增删改 后端业务逻辑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章