使用Ajax实现批量删除

在上一次的笔记中,我们已经实现了安全登录,在本节学习将会使用Ajax的异步刷新技术实现用户的批量删除功能。

一、 首先介绍一下什么是Ajax:
Ajax 即“AsynchronousJavascriptAndXML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。

Ajax = 异步JavaScript和XML(标准通用标记语言的子集)。

Ajax 是一种用于创建快速动态网页的技术。

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

二、下面我们来实现批量删除:
过程:管理员在管理用户界面勾选待删除的用户,点击“批量删除”按钮后,即删除选中的用户信息。

1、Dao层:
void batchDelete(List ids);
2、配置Mapper文件:

delete id="batchDelete" parameterType="list">
    delete from tb_user where id in
    <foreach collection=" list" item="id" open="(" close=")" separator=",">
        #{id}
    </foreach>
</delete>

注意:前端界面要传递一个id的集合给后端,这个集合是用逗号分隔不同id的。至于这个集合是如何传过来的将会在稍后解释。

3、Service层:
void batchDelete(List ids);
实现类:
public void batchDelete(List ids){
userDao.batchDelete(ids);
}

4、Controller层:

@RequestMapping("/batchDelete.do")
public String batchDelete(String userList){
    String[] strs = userList.split(",");
    List<Integer> ids = new ArrayList<>();
    for(int i = 0;i<strs.length; i++){
        ids.add(Integer.parseInt(strs[i]));
    }
    userInfoService.batchDelete(ids);
    return "redirect:findAll.do";
}

所以这个函数对应的是batchDelete.do这个动作,因为我们存放在数据库中的id都是int类型,所以在使用传进来的字符型参数时需要先转换为Int类型,然后传给其它层进行,执行完毕后跳到新的列表界面。

5、user-list.jsp界面:

							<th class="" style="padding-right: 0px"><input name="ids1"
									id="selall" type="checkbox" class="icheckbox_square-blue">
							</th>
							<th class="sorting_asc">ID</th>
							<th class="sorting_desc">用户名</th>
							<th class="sorting_asc sorting_asc_disabled">密码</th>
							<th class="text-center">操作</th>
						</tr>
						</thead>
						<tbody>
						<c:forEach var="user" items="${pageInfo.list}">
							<tr>
								<td><input name="ids2" value="${user.id}" type="checkbox" ></td>
								<td>${user.id}</td>
								<td>${user.username}</td>
								<td>${user.password}</td>
								<td class="text-center">
									<a href="${pageContext.request.contextPath}/user/findUserById.do?id=${user.id}" class="btn bg-olive btn-xs">更新</a>
									<a href="${pageContext.request.contextPath}/user/delUser.do?id=${user.id}" class="btn bg-olive btn-xs">删除</a>
									<a href="#" class="btn bg-olive btn-xs">添加角色</a>
								</td>
							</tr>
						</c:forEach>
						</tbody>

这一部分的代码对应界面中用户列表的显示

    <button type="button" class="btn btn-default" title="批量删除" onclick="deleteAll()">

									<i class="fa fa-refresh"></i> 批量删除
								</button>

这一部分代码是说“批量删除”按钮绑定了函数:deleteAll()

<script type="text/javascript">
	function deleteAll() {
		var checkedNum =  $("input[name='ids2']:checked").length;
		if(checkedNum == 0){
		    alert("至少选择一项进行删除!");
		    return;
		}

		if(confirm("确定删除选中的用户吗?")){
		    var userList = new Array();
		    $("input[name='ids2']:checked").each(function(){
		        userList.push($(this).val());
			});
		}

		//提交
		$.ajax({
			type:"post",
			url:"${pageContext.request.contextPath}/user/batchDelete.do",
			data:{userList: userList.toString()},
			success: function(){
			    alert("删除成功!");
			    location.reload();
            },
			error :function(){
			    alert("删除失败!")
            }
		});
    }
</script>

上面的代码是deleteAll()函数的具体实现,在这里使用了Ajax技术。
首先判断当前可选框是否被选中。如果选中了就会将id放到userList这个集合中,然后使用Ajax,分别写上对应的动作,要传入的参数以及成功或失败的处理方法等就可以了。接下来是截图展示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
除了批量删除外,Ajax可以用到的地方还有很多,比如登录时候的验证等,所以我们应该掌握好这种技术,争取在以后遇到复杂问题的时候灵活使用它。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值