ajax传数组给SpringMVC的Controller,实现批量删除

avatar 2018年1月9日18:36:22 评论 639 views

批量删除功能我们经常需要实现,道理很简单,前台向后台传id集合就行。有两种传输方式,一种是通过地址栏参数(后台RequestParam接收),一种是通过 body(后台RequestBody 接收),前者有一个弊端,就是地址栏上传输的字节有限,所以通常我们使用 Post 方式的 RequesyBody 来接收。

代码很简单,直接贴代码

前台代码

  1. //全选或者取消全选
  2.         function DoCheck() {
  3.             var ch = document.getElementsByName("ids");
  4.             if (document.getElementById("allSelect").checked == true) {
  5.                 for (var i = 0; i < ch.length; i++) {
  6.                     ch[i].checked = true;
  7.                 }
  8.             } else {
  9.                 for (var i = 0; i < ch.length; i++) {
  10.                     ch[i].checked = false;
  11.                 }
  12.             }
  13.         }
  14.         //点击批量删除按钮
  15.         $(document).on('click', '#batchRemoveBtn', function () {
  16.             var checkID = [];//定义一个空数组
  17.             $("input[name='ids']:checked").each(function (i) {//把所有被选中的复选框的值存入数组
  18.                 checkID[i] = $(this).val();
  19.             });
  20.             alert(JSON.stringify(checkID));
  21.             if (checkID != null && checkID.length > 0) {
  22.                 $.ajax({
  23.                     type: 'POST',
  24.                     url: '/admin/routeA/batchRemove',
  25.                     data: JSON.stringify(checkID),
  26.                     dataType: 'json',
  27.                     contentType:'application/json',
  28.                     success: function (data) {
  29.                         if (data.code == 1) {
  30.                             showMsg(data.msg, "success"1000);
  31.                         } else {
  32.                             showMsg(data.msg, "error"1000);
  33.                         }
  34.                     }
  35.                 });
  36.             }
  37.         })

 

后台代码

  1. /**
  2.      * 处理批量删除
  3.      *
  4.      * @param ids RouteA编号列表
  5.      * @return 重定向到/admin/routeA
  6.      */
  7.     @PostMapping(value = "/batchRemove")
  8.     @ResponseBody
  9.     public JsonResult batchRemoveRouteA(@RequestBody String ids) {
  10.         JSONArray json = JSONArray.parseArray(ids);
  11.         List<Long> list = new ArrayList<>();
  12.         for (int i = 0; i < json.size(); i++) {
  13.             list.add(Long.parseLong((String) json.get(i)));
  14.         }
  15.         try {
  16.             if (list != null && list.size() > 0) {
  17.                 routeAService.removeByIds(list);
  18.             }
  19.         } catch (Exception e) {
  20.             log.error("批量删除RouteA失败:{}", e.getMessage());
  21.             return new JsonResult(ResultCodeEnum.FAIL.getCode(), "删除失败");
  22.         }
  23.         return new JsonResult(ResultCodeEnum.SUCCESS.getCode(), "删除成功");
  24.     }

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: