LayUI删除数据,重载后出现数据接口异常时的解决方案

LayUI删除数据,重载后出现数据接口异常时的解决方案

js代码

table.on('tool(demo)', function (obj) {
            // data为当前要删除的对象
            var data = obj.data;
            if (obj.event === 'detail') {
                //icon是图标,6是图标编号,默认没有
                //time是msg弹框的显示时间,默认三秒,这里是10秒

                layer.msg('特性:'+JSON.stringify(data.cardPower),{icon:6,time:10000});

            } else if (obj.event === 'del') {

                layer.confirm('真的删除行么', function (index) {
                    obj.del();
                    layer.close(index);
                    // 获取对象的id,cardId为自己命名的名称
                    console.log(data.cardId);
                    // 重载,'idTest'为table的id
                    table.reload('idTest',{
                        // servlet路径
                        url: '${pageContext.request.contextPath}/cards?method=del',
                        // 传过去附带的参数内容
                        where:{
                            'id[]' : data.cardId
                        }
                    });

                });
            } else if (obj.event === 'edit') {
                layer.alert('编辑行:<br>' + JSON.stringify(data))
            }
        });

java代码

    public void del(HttpServletRequest request, HttpServletResponse response) throws ServletException,
            IOException {


        // 获取参数
        String[] ids = request.getParameterValues("id[]");
        // 调用根据id删除数据的方法
        cardService.deleteByIds(ids);
        // 调用all方法,响应数据
        allData(request, response);

    }


    public void allData(HttpServletRequest request, HttpServletResponse response) throws ServletException,
            IOException {

        // 获取分页的参数(当前第几页),因为没有设置过“p”的值,所以默认为0
        String currentPage = request.getParameter("page");
        // 正因为为0,所以这里半段是否为空是返回true的
        if(StringUtils.isEmpty(currentPage)) {
            // 初始化当前页数为1
            currentPage = "1";
        }
        // 设置每页显示的条数
        // 创建一个分页对象    转换为数字对象类型  传入当前页数
        Page page = Page.of(Integer.valueOf(currentPage));

        // 获取查询的条件  若jsp那边没有form表单提交的查询条件,
        // 那么这里就啥都没有,所以执行的条件查询就不会带条件去查询,
        // 所以查询到的结果将会为所有卡牌数据
        Map<String, String[]> parms = request.getParameterMap();

        // 调用分页方法获取数据,这个数据里面放了一页里能存放的所有卡牌
        Page<Card> cardsPage = cardService.myFindPageCard(page, parms);

        // 这里我将json封装了一下,具体内容在下面的代码块
        LayuiData layuiData = new LayuiData();
        layuiData.setCode(0);
        layuiData.setCount(cardsPage.getTotalCount());
        layuiData.setMsg("");
        // cardPage.getPageData为分页后的数据集合(List)
        layuiData.setData(cardsPage.getPageData());
        // 把对象转成JSON,这里我用的是阿里爸爸的fastjson,如果你的是maven项目,那么直接在pom.xml里面放入
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.61</version>
        </dependency>
        // 就可以了
        // 将封装后的数据转成json格式的数据
        String jsonString = JSONObject.toJSONString(layuiData);
        // 设置响应的格式
        response.setContentType("application/json;charset=utf-8");
        // 将数据响应到浏览器
        PrintWriter writer = response.getWriter();
        writer.print(jsonString);
        writer.close();

    }
// LayuiData对象
public class LayuiData {

    private int code;
    private String msg;
    private int count;
    private List data;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public List getData() {
        return data;
    }

    public void setData(List data) {
        this.data = data;
    }
}
// page对象
public class Page<T> {
    /**
     * 分页后的数据集合
     */
    private List<T> pageData;
    /**
     * 当前的页码
     */
    private Integer currentPage = 1;
    /**
     * 每页显示条数
     */
    private Integer pageSize = 10;
    /**
     * 总条数
     */
    private Integer totalCount;

    public int getPageCount() {
        if (this.totalCount % this.pageSize == 0){
            return this.totalCount / this.pageSize;
        }
        return this.totalCount / this.pageSize + 1;
    }

    /**
     * 创建分页对象
     *
     * @param currentPage 当前页码
     * @return 分页对象
     */
    public static Page of(Integer currentPage) {
        Page page = new Page();
        page.setCurrentPage(currentPage);
        return page;
    }

    /**
     * 获取当前页面后,判断当前页是否大于0
     * @return
     */
    public int getCurrentSize() {
        Integer cp = this.currentPage;
        //判断当前页是否大于0
        if (cp > 0) {
            //大于0后点击前一页就跳到前一页的页面数据
            cp -= 1;
        } else {
            // 否则就没法再下一页

            cp = 0;
        }

        // 判断分页开始的位置是否大于总条数
        int currentSize = cp * this.pageSize;
        if (currentSize > this.totalCount){
            // (5-1)*10   38
            // 获取总分页数
            currentSize = (this.currentPage - 1) * pageSize;
        }
        return currentSize;
    }


    public List<T> getPageData() {
        return pageData;
    }

    public void setPageData(List<T> pageData) {
        this.pageData = pageData;
    }

    public Integer getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(Integer currentPage) {
        this.currentPage = currentPage;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }
}

总结:出现数据接口异常的原因是出在没有响应Ajax的请求,也就是没有执行allData方法里面的代码,没有向浏览器发送数据就导致浏览器没有数据可显示,然后人家就只好给你报数据接口异常咯

emmm…这里是萌新一枚,代码写得太丑的话还请前辈不吝赐教0-0

发布了30 篇原创文章 · 获赞 7 · 访问量 1588

猜你喜欢

转载自blog.csdn.net/qq_41946543/article/details/102328046