关于使用ajax显示后台传递到前台的json数据(本质上算是jquary来处理because about the code of ajax is only one )

在之前的文章中有写过[cartitem相关的类],这里只是展示部分代码(https://blog.csdn.net/weixin_45459209/article/details/132403784?spm=1001.2014.3001.5501)

CartItemDao.java

    public Integer findByUidCount(Integer uid);
    public List<CartItem> findCartByUid(int begin, int pageSize,Integer uid);

CartItemDaoImpl.java

    @Override
    public Integer findByUidCount(Integer uid) {
        return this.getValue("select count(*) from cartitem where uid=?", uid).intValue();
    }
        @Override
    public List<CartItem> findCartByUid(int begin, int pageSize, Integer uid) {
        return this.getBeanList("select * from cartitem where uid=? order by id desc limit ?,?", uid , begin , pageSize);
    }

CartItemServiceImpl.java

 @Override
    public Page<CartItem> page(Integer pageNo, Integer pageSize, Integer uid) {
        Page<CartItem> page = new Page<>();
        page.setPageNo(pageNo);//将参数pageNo保存到page对象
        page.setPageSize(pageSize);//将参数pageSize保存到page对象

        //获取t_book表的总记数 , 并将总记数封装到page对象中
        page.setPageTotalCount( cartItemDao.findByUidCount(uid));
        //求出最大页
        if( page.getPageTotalCount() % page.getPageSize() == 0 ){
            //使用  [总记录数 / 当前页显示数量 = 总页数]
            page.setPageTotal( page.getPageTotalCount() / pageSize );
        }else{
            //如果除不净的话,就需要+1  [总记录数 / 当前页显示数量 = 总页数 + 1]
            page.setPageTotal( page.getPageTotalCount() / pageSize + 1);
        }

        //如果当前页大于最大页
        if( page.getPageNo() > page.getPageTotal() ){
            page.setPageNo(page.getPageTotal());//就将最大页设置给当前页
        }
        //如果当前页小于最小页
        if( page.getPageNo() < 1 ){
            page.setPageNo(1);//就将第一页设置给当前页
        }

        //通过当前网与每页显示数 求出 起始页
        int begin = (page.getPageNo() - 1) * page.getPageSize();
        List<CartItem> cartList = cartItemDao.findCartByUid(begin, page.getPageSize(),uid);
        page.setItems(cartList);//将查询出来的结果集对象保存到page中
        return page;
    }

CartItemService.java

public Page<CartItem> page(Integer pageNo , Integer pageSize , Integer uid );

CartServlet.java

    protected void findCartByUid(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        User user =(User)req.getSession().getAttribute("user");
        int pageNo=WebUtils.parseInt(req.getParameter("pageNo"),1);
        int pageSize=WebUtils.parseInt(req.getParameter("pageSize"),4);
        CartItemService cartItemService=new CartItemServiceImpl();
        Page<CartItem> page=cartItemService.page(pageNo,pageSize,user.getId());
        Gson gson=new Gson();
        String str=gson.toJson(page);
        resp.setContentType("application/json;charset=utf-8");

        PrintWriter out = resp.getWriter();

        out.print(str);
    }

first.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>书城首页</title>
    <base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/">
    <link type="text/css" rel="stylesheet" href="static/css/style.css">

</head>
<body>

<div id="header">
    <img class="logo_img" alt="" src="static/img/logo.gif" width="230px" height="80px">
    <span class="wel_word">网上书城</span>
    <div>
        <c:choose>
            <c:when test="${empty sessionScope.user}">
                <a href="pages/user/login.jsp">登录</a> |
                <a href="pages/user/regist.jsp">注册</a> &nbsp;&nbsp;
            </c:when>
            <c:otherwise>
                <span>欢迎<span class="um_span">${sessionScope.user.username}</span>光临网上书城</span>
                <a href="UserServlet?method=logout">注销</a>
            </c:otherwise>
        </c:choose>
        <a href="javascript:jumpcart()">购物车</a>
        <a href="pages/manager/manager.jsp">后台管理</a>
    </div>
</div>
<div id="main">
    <div id="book">
        <div class="book_cond" style="margin-left: 0px;text-align: center">
            <form id="fid">
                <input type="hidden" name="method" value="searchPage">
                书名:<input type="text" name="name" value="${requestScope.name}">
                作者:<input type="text" name="author" value="${requestScope.author}">
                价格:<input id="min" type="text" name="min" value="${requestScope.min}">-
                <input id="max" type="text" name="max" value="${requestScope.max}"><input type="button" value="查询" id="searchBut"/>
            </form>
        </div>
        <div style="text-align: center;visibility: hidden;" id="cartdiv">
            <span>您的购物车中有<span style="color: red" id="bookCount"></span>件商品</span>
            <div>
                您刚刚将<span style="color: red" id="bookName"></span>加入到了购物车中
            </div>
        </div>


        <div class="b_list" style="display: none;">
            <div class="img_div">
                <img class="book_img" alt="" src=""/>
            </div>
            <div class="book_info">
                <div class="book_name">
                    <span class="sp1">书名:</span>
                    <span class="sp2"></span>
                </div>
                <div class="book_author">
                    <span class="sp1">作者:</span>
                    <span class="sp2"></span>
                </div>
                <div class="book_price">
                    <span class="sp1">价格:</span>
                    <span class="sp2"></span>
                </div>
                <div class="book_sales">
                    <span class="sp1">销量:</span>
                    <span class="sp2"></span>
                </div>
                <div class="book_amount">
                    <span class="sp1">库存:</span>
                    <span class="sp2"></span>
                </div>
                <div class="book_add">
                    <input type="button" value="加入购物车" class="addToCart" bookId=""/>
                </div>
            </div>
        </div>
    </div>

    <!--分页 -->
    <div id="page_nav">
        <a href="#">首页</a>
        <a href="#">上一页</a>
        <a href="#">下一页</a>
        <a href="#">末页</a><span>100</span>页,<span>100</span>条记录 到第<input name="pn" id="pn_input"/><input id="butid" type="button" value="确定">
    </div>

</div>
<div id="bottom">
		<span>
			网上书城.Copyright &copy;2020
		</span>
</div>
</body>
</html>
<script src="static/script/jquery-3.6.0.min.js"></script>
<script src="static/layui/layui.js"></script>
<script>
    var peipage ;

    function jumpcart(){
        if ("${sessionScope.user}" == "") {
            layer.msg('请先登录才能访问购物车!', {
                icon: 2,
                time: 2000 //2秒关闭(如果不配置,默认是3秒)
            });
        }else{
            window.location.href = "pages/cart/cart.jsp";
        }
    }


    function mypage(flag) {
        var pageNo = "";
        if("首页" == flag){
            pageNo = 1;
        }else if("上一页"==flag){
            pageNo = peipage.pageNo - 1 ;
        }else if("下一页"==flag){
            pageNo = peipage.pageNo + 1 ;
        }else if("末页"==flag){
            pageNo = peipage.pageTotal ;
        }else{
            pageNo = flag;
        }

        //alert( $("#fid").serialize())
        //alert($("#fid").serialize()+"&pageNo="+pageNo);
        $.post("BookServlet", $("#fid").serialize()+"&pageNo="+pageNo, function (msg) {
            peipage = msg;
            $("#page_nav").find("span").eq(0).html(msg.pageTotal)
            $("#page_nav").find("span").eq(1).html(msg.pageTotalCount)
            $("div[peijie=delete]").remove();
            for (let i = 0; i < msg.items.length; i++) {
                newdiv = $("div.b_list:first").clone(true);//clone(true)事件一起复制
                newdiv.attr("peijie" , "delete");//给这些克隆出来的元素添加一个属性,方便后面删除他们
                newdiv.css("display", "");
                newdiv.find("img.book_img").attr("src", msg.items[i].imgPath);
                newdiv.find("div.book_name").find("span").eq(1).html(msg.items[i].name);
                newdiv.find("div.book_author").find("span").eq(1).html(msg.items[i].author);
                newdiv.find("div.book_price").find("span").eq(1).html("¥" + msg.items[i].price);
                newdiv.find("div.book_sales").find("span").eq(1).html(msg.items[i].sales);
                newdiv.find("div.book_amount").find("span").eq(1).html(msg.items[i].stock);
                newdiv.find("div.book_add").find("input").attr("bookId", msg.items[i].id)
                $("div.b_list:last").after(newdiv)
            }
        })
    }

    $(function () {
        mypage("首页");//网页加载完成调用此方法显示第一页数据

        $("#butid").click(function(){
            //获取输入框里面的值
            var pageNo = $("#pn_input").val();
            var zz2 = new RegExp("^[0-9]*[1-9][0-9]*$");
            if (zz2.test(pageNo)) {
                mypage(pageNo);
            } else {
                layer.msg('请输入整数!', {
                    icon: 2,
                    time: 2000 //2秒关闭(如果不配置,默认是3秒)
                });
            }
        });

        $("#searchBut").click(function (){
            mypage("首页");
        });

        $("#page_nav").find("a").eq(0).click(function(){
            //点击首页时显示第一页数据
            mypage("首页")
        })
        $("#page_nav").find("a").eq(1).click(function(){
            //点击上一页时显示数据
            mypage("上一页")
        })
        $("#page_nav").find("a").eq(2).click(function(){
            //点击下一页时显示数据
            mypage("下一页")
        })
        $("#page_nav").find("a").eq(3).click(function(){
            //点击末页时显示数据
            mypage("末页")
        })


        $("input.addToCart").click(function () {
            if ("${sessionScope.user}" == "") {

                layer.msg('请先登录在来添加购物车!', {
                    icon: 2,
                    time: 2000 //2秒关闭(如果不配置,默认是3秒)
                });
            } else {
                var id = $(this).attr("bookId");
                $.get("CartServlet", "method=addItem&id=" + id, function (msg) {
                    // alert( msg.bookName  + " = " + msg.bookCount)
                    $("#bookCount").html(msg.bookCount);
                    $("#bookName").html(msg.bookName)
                    $("#cartdiv").css("visibility", "");//显示出来

                    layer.msg('添加购物车成功', {
                        icon: 1,
                        time: 2000 //2秒关闭(如果不配置,默认是3秒)
                    });
                });
            }
        });
    });
</script>

cart.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>购物车</title>
    <base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/">
    <link type="text/css" rel="stylesheet" href="static/css/style.css">
    <script src="static/script/jquery-1.7.2.js"></script>
</head>
<body>

<div id="header">
    <img class="logo_img" alt="" src="static/img/logo.gif" width="230px" height="80px">
    <span class="wel_word">购物车</span>
    <div>
        <span>欢迎<span class="um_span">${sessionScope.user.username}</span>光临网上书城</span>
        <a href="pages/order/order.jsp">我的订单</a>
        <a href="UserServlet?method=logout">注销</a>&nbsp;&nbsp;
        <a href="index.jsp">返回</a>
    </div>
</div>

<div id="main">

    <table>
        <tr>
            <td>商品名称</td>
            <td>数量</td>
            <td>单价</td>
            <td>金额</td>
            <td>操作</td>
        </tr>
        <tr style="display: none" class="c_list">
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td><a class="deleteA" href="javascript:void(0)">删除</a></td>
            <input type="hidden" value="0">
        </tr>

    </table>

    <%--分页--%>
    <br>
    <div id="page_nav">
        <a href="javascript:void(0)">首页</a>
        <a href="javascript:void(0)">上一页</a>
        <a href="javascript:void(0)">下一页</a>
        <a href="javascript:void(0)">末页</a><span>100</span>页,<span>100</span>条记录 到第<input name="pn" id="pn_input"/><input id="butid" type="button" value="确定">
    </div>
    <script src="static/layui/layui.js"></script>

    <script>
        var zhupage;
        function mypage(flag) {
            var pageNo = "";
            if ("首页" == flag) {
                pageNo = 1;
            } else if ("上一页" == flag) {
                pageNo = zhupage.pageNo - 1;
            } else if ("下一页" == flag) {
                pageNo = zhupage.pageNo + 1;
            } else if ("末页" == flag) {
                pageNo = zhupage.pageTotal;
            } else {
                pageNo = flag;
            }


            $.post("CartServlet", "method=findCartByUid&pageNo=" + pageNo, function (msg) {
                zhupage = msg;
                $("tr[peijie=delete]").remove();
                $("#page_nav").find("span").eq(0).html(msg.pageTotal)
                $("#page_nav").find("span").eq(1).html(msg.pageTotalCount)
                for (let i = 0; i < msg.items.length; i++) {
                    var cart = $(".c_list:first").clone(true);
                    cart.attr("peijie", "delete");//给这些克隆出来的元素添加一个属性,方便后面删除他们
                    cart.css("display", "");
                    cart.find("td").eq(0).html(msg.items[i].name);
                    cart.find("td").eq(1).html(msg.items[i].count);
                    cart.find("td").eq(2).html(msg.items[i].price);
                    cart.find("td").eq(3).html(msg.items[i].totalPrice);
                    // console.log(msg.items[i].uid)
                    cart.find("input").val(msg.items[i].id);
                    $(".c_list:last").after(cart);
                }

            });
        }
        $(function(){
            mypage("首页");
            $("#butid").click(function () {
                //获取输入框里面的值
                var pageNo = $("#pn_input").val();
                var zz2 = new RegExp("^[0-9]*[1-9][0-9]*$");
                if (zz2.test(pageNo)) {
                    mypage(pageNo);
                } else {
                    layer.msg('请输入整数!', {
                        icon: 2,
                        time: 2000 //2秒关闭(如果不配置,默认是3秒)
                    });
                }
            });
        })
        $("#page_nav").find("a").eq(0).click(function(){
            //点击首页时显示第一页数据
            mypage("首页")
        })
        $("#page_nav").find("a").eq(1).click(function(){
            //点击上一页时显示数据
            mypage("上一页")
        })
        $("#page_nav").find("a").eq(2).click(function(){
            //点击下一页时显示数据
            mypage("下一页")
        })
        $("#page_nav").find("a").eq(3).click(function(){
            //点击末页时显示数据
            mypage("末页")
        })
    </script>


<%--       <div class="cart_info">--%>
<%--            <span class="cart_span">购物车中共有<span class="b_count">4</span>件商品</span>--%>
<%--            <span class="cart_span">总金额<span class="b_price">90.00</span></span>--%>
<%--            <span class="cart_span"><a href="#">清空购物车</a></span>--%>
<%--            <span class="cart_span"><a href="checkout.jsp">去结账</a></span>--%>
<%--        </div>--%>


</div>

<div id="bottom">
		<span>
			网上书城.Copyright &copy;2020
		</span>
</div>
</body>
</html>

运行图片:
在这里插入图片描述

关于使用jquery的其他方式来实现的方式

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>购物车</title>
    <base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/">
    <link type="text/css" rel="stylesheet" href="static/css/style.css">
</head>
<body>

<div id="header">
    <img class="logo_img" alt="" src="static/img/logo.gif" width="230px" height="80px">
    <span class="wel_word">购物车</span>
    <div>
        <span>欢迎<span class="um_span">老王</span>光临网上书城</span>
        <a href="pages/order/order.jsp">我的订单</a>
        <a href="index.jsp">注销</a>&nbsp;&nbsp;
        <a href="index.jsp">返回</a>
    </div>
</div>

<div id="main">

    <table>
        <tr>
            <td>商品名称</td>
            <td>数量</td>
            <td>单价</td>
            <td>金额</td>
            <td>操作</td>
        </tr>
    </table>
    <br/>


    <div class="cart_info">
        <span class="cart_span">购物车中共有<span class="b_count">4</span>件商品</span>
        <span class="cart_span">总金额<span class="b_price">90.00</span></span>
        <span class="cart_span"><a href="#">清空购物车</a></span>
        <span class="cart_span"><a href="pages/cart/checkout.jsp">去结账</a></span>
    </div>

</div>

<div id="bottom">
		<span>
			网上书城.Copyright &copy;2020
		</span>
</div>
</body>
</html>
<script src="static/script/jquery-1.7.2.js"></script>
<script src="static/layui/layui.js"></script>
<script>
    var peipage;

    $(function () {
        mypage()

        $("#main").scroll(function () {
            // 判断滚动条是否到达底部
            if (this.scrollTop + this.clientHeight >= this.scrollHeight) {
                mypage("下一页");
            }
        })
    })

    function mypage(flag) {
        var pageNo = 1 ;
        if ("下一页" == flag) {
            pageNo = peipage.pageNo + 1;
        }


        $.post("CartServlet", "method=findCartByUid&pageNo="+pageNo, function (msg) {
            peipage = msg;
            for (let i = 0; i < msg.items.length; i++) {
                $("<tr>" +
                    "<td>" + msg.items[i].name + "</td>" +
                    "<td>" + msg.items[i].count + "</td>" +
                    "<td>" + msg.items[i].price + "</td>" +
                    "<td>" + msg.items[i].totalPrice + "</td>" +
                    "<td><a href='#'>删除</a></td>" +
                    "</tr>").appendTo("table");
            }
        });
    }
</script>

注所有的配置都一样,只需要更换cart.jsp即可,显示的效果和以上的效果基本一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ac果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值