如何使用ajax进行批量删除

本文详细介绍了如何实现批量删除操作,从DAO层到服务层再到前端页面和Servlet的处理,包括点击事件处理、AJAX请求和后台逻辑。通过实例展示了如何处理前端选中的复选框ID,以及在后端进行数组拆分并调用删除方法完成批量删除。
摘要由CSDN通过智能技术生成

一:先将底层写好(dao底层不需要使用数组 

public int deleteCollection(int id) {
        String sql="delete from mycollection where id=? ";
        Object[] params={id};
        int n=0;
        try {
            n=super.executeUpdate(sql,params);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return n;
    }

二:写好服务类 service(在服务类将形参改为数组,并改为String类型)

 public void deleteCollection(String[] id) {
        if(id!=null&&id.length>0) {
                for(String i:id){
                    myCollectionDao.deleteCollection(Integer.parseInt(i));
                }
            }
        }

三:页面:点击复选框,再点击删除按钮,实现批量删除操作

//点击事件,点击删除按钮
$(".btn").click(function() {
                if (confirm("是否删除?")) {//防手抖操作
                    var flag = false;
                    var box1 = $(".else_checkbox");//获取到所有的复选框
                    var uids = "";//先暂时定义一个空的变量来存取选中的id
                    for (var i = 0; i < box1.length; i++) {
                        if (box1[i].checked) {//通过for循环来查找被选中的复选框
                           uids += box1[i].value + "_";//将所有选中的复选框的id用下划线连接
                           flag = true;
                        }
                    }

                if (flag) {
                    $.ajax({
                        type: 'post',
                        url: "<%=request.getContextPath()%>/qiantai/playServlet?method=deletePiliang",//进入到你的删除servlet路径里去
                        data: "uid=" + uids,//将刚刚连接好的uids存放在uid里面
                        dataType: "json",
                        //成功后开启模态框
                        success: function (data) {
                            console.log("删除成功!");
                        },
                        error: function () {
                            console.log("错误!");
                        }
                    });
                }
        });

四:最后一步,写servlet

        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=UTF-8");

                System.out.println("进入批量删除...");
                if (null != cid) {
                    String cid=request.getParameter("uid");//获取到刚刚存放的uid
                    String[] cids = new String[]{};
                    cids = cid.split("_");//将其_分割,会得到一个数组
                    Map map = new HashMap();
                    response.setContentType("text/json;charset=utf-8");
                    service.deleteCollection(cids);//调用service里的删除方法
                    JSONObject object = new JSONObject();
                    //使用JSON对象传过去
                    object.put("code", "ok");
                    object.put("data", cids);
                    System.out.println(cids);
                    out.write(object.toJSONString(object));
                    out.flush();
                    out.close();

这样就差不多可以啦!

假设你的删除按钮的HTML代码如下: ```html <button class="delete-btn" data-id="1">删除1</button> <button class="delete-btn" data-id="2">删除2</button> <button class="delete-btn" data-id="3">删除3</button> <!-- ... --> ``` 其中 `data-id` 为每条数据的唯一标识。 使用 Ajax 实现批量删除JavaScript 代码如下: ```javascript // 获取所有删除按钮 const deleteBtns = document.querySelectorAll('.delete-btn'); // 遍历删除按钮,为每个按钮添加点击事件 deleteBtns.forEach(btn => { btn.addEventListener('click', () => { // 获取当前要删除的数据的 ID const id = btn.dataset.id; // 发送 Ajax 请求进行删除操作 const xhr = new XMLHttpRequest(); xhr.open('DELETE', `/api/data/${id}`); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onload = () => { if (xhr.status === 200) { // 删除成功,移除该条数据的 DOM 元素 btn.parentNode.remove(); } else { // 删除失败,处理错误信息 console.log(xhr.responseText); } } xhr.send(); }); }); // 批量删除按钮的点击事件 const batchDeleteBtn = document.getElementById('batch-delete-btn'); batchDeleteBtn.addEventListener('click', () => { // 获取所有被选中的数据的 ID const selectedIds = []; const checkboxes = document.querySelectorAll('.data-checkbox'); checkboxes.forEach(checkbox => { if (checkbox.checked) { selectedIds.push(checkbox.dataset.id); } }); // 如果没有选中任何数据,直接返回 if (selectedIds.length === 0) { return; } // 发送 Ajax 请求进行批量删除操作 const xhr = new XMLHttpRequest(); xhr.open('DELETE', '/api/data'); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onload = () => { if (xhr.status === 200) { // 批量删除成功,移除被选中数据的 DOM 元素 selectedIds.forEach(id => { const dataRow = document.querySelector(`[data-id="${id}"]`); dataRow.remove(); }); } else { // 批量删除失败,处理错误信息 console.log(xhr.responseText); } } xhr.send(JSON.stringify({ ids: selectedIds })); }); ``` 其中,点击每个删除按钮会发送一个 DELETE 请求进行单条数据的删除操作,批量删除按钮则会发送一个 DELETE 请求进行多条数据的删除操作。在服务器端实现相应的路由和逻辑即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值