2 delie08 delie08 于 2017.09.11 16:46 提问

商城详情页点击购物按钮提示加入购物车并且在购物车无刷新增加数量

商城详情页点击购物按钮并且在购物车无刷新增加数量,请问一下这个功能如何实现

7个回答

zry15671554200
zry15671554200   2017.09.11 17:12

使用ajax异步刷新可以完美解决。

zry15671554200
zry15671554200 回复delie08: 可以参考我博客里面的关于实现ajax的文章,这个用起来很简单的。
2 个月之前 回复
zry15671554200
zry15671554200 回复delie08: 可以这么做,当你点击加入购物车按钮后,数据库中的购物车表里面就保存了这个数据,然后在后台查询购物车内所有商品,这里就可以ajax将查询到的list传入前台,前台使用settimeout()或者setInterval()方法每隔500ms就发送一次ajax请求,实时获得最新数据,然后把实时获得的数据放到div中就可以了。
2 个月之前 回复
delie08
delie08 主要是我点击商品详情页的加入购物车按钮,然后购物车的商品数据增加(前提是购物车里面已经有这个商品了)
2 个月之前 回复
huang931027
huang931027   2017.09.11 16:50

并且在购物车无刷新增加数量 是什么意思你说的是异步的更新吗? 类似Ajax? 这个就是Ajax可以实现的,你可以了解一下Ajax

delie08
delie08 主要是我点击商品详情页的加入购物车按钮,然后购物车的商品数据增加(前提是购物车里面已经有这个商品了)
2 个月之前 回复
jhj_666
jhj_666 回复Luffy_fans_zh: 哦,明白你说的意思了
2 个月之前 回复
huang931027
huang931027 回复梦想中的大剑豪: 异步刷新不是页面刷新,是局部刷新,可以控制页面的元素
2 个月之前 回复
zry15671554200
zry15671554200 回复梦想中的大剑豪: 使用AJAX好一点,使用AJAX异步刷新网页是不会刷新的
2 个月之前 回复
jhj_666
jhj_666 异步的刷新页面也会刷新的吧,他的意思应该是页面就只有数量变化
2 个月之前 回复
jhj_666
jhj_666   2017.09.11 16:51

在页面定义一个变量表示数量,点击一次就加一,点击同时后台数据库执行数据更新。(自学新手,不行勿喷)

delie08
delie08 主要是我点击商品详情页的加入购物车按钮,然后购物车的商品数据增加(前提是购物车里面已经有这个商品了)
2 个月之前 回复
weixin_39158271
weixin_39158271   2017.09.11 17:04

将商品保存到session对象中去,同时创建map集合,以键值对的形式将商品(id:Product)保存

 package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import dao.ProductDao;
import domain.Product;

public class ProdectServlet extends HttpServlet {
    //创建map,为购物车
    HashMap<String, Product> map = new HashMap<String, Product>();
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        String pid = request.getParameter("pid");
        int count = Integer.parseInt(request.getParameter("count"));

        HttpSession session = request.getSession();
        Object gwc= session.getAttribute("gwc");

        if (gwc == null) {
            session.setAttribute("gwc", map);
        }
        if (!map.containsKey(pid)) {
            Product p = new ProductDao().findById(pid);
            p.setNum(count);
            map.put(pid, p);
        } else {
            Product p = map.get(pid);
            p.setNum(p.getNum() + count);
        }
        for (Product product : map.values()) {
            System.out.println(product.getPname());
        }
        PrintWriter out = response.getWriter();
        out.println("商品加入购物车成功<br/>");
        out.println("<a href='/day13-manager/product.jsp'>请继续浏览商品</a><br/>");
        out.println("<a href='/day13-manager/gwcar'>浏览购物车</a><br/>");

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}

delie08
delie08 主要是我点击商品详情页的加入购物车按钮,然后购物车的商品数据增加(前提是购物车里面已经有这个商品了)
2 个月之前 回复
huang931027
huang931027 用jsp 写吧。这样写页面很难控制
2 个月之前 回复
delie08
delie08   2017.09.11 17:32

主要是我点击商品详情页的加入购物车按钮,然后购物车的商品数据增加(前提是购物车里面已经有这个商品了)

ShewMi
ShewMi   2017.09.11 22:44

现在推荐购物车数据存数据库,只要用户加入购物车这条订单就生成了,只不过订单的状态是购物车状态,当然还有待付款,带发货待收货等状态。
前端用ajax结合jquery可以轻松实现,ajax和jquery就不说了,首先你要知道是什么,在这个用例里面,ajax用来异步提交和接收,jquery用来动态更新购物车列表,
你可以绑定一个时间到我的购车按钮,触发就同步一下数据库最新状态确保实时性。在这里面,可以用json格式来传输数据,不需要什么jsp,至于会话控制,你使用拦截器过滤器等都很容易实现。过期就跳转登录页面。
如果并发性能要求比较高,那么给个刷新购物车按钮,要么提交的时候再刷新,来降低服务器负荷,还有就是先将数据在后台缓存,一定时间周期或填表付款的时候再更新数据库。

jkl012789
jkl012789   2017.09.12 09:52

ajax通过post去后台改数据库,然后在success中判断返回值是否为修改成功 成功则去修改购物车数量 失败就不用我说了吧~

Csdn user default icon
上传中...
上传图片
插入图片