添加到购物车路线node.js

时间:2020-04-16 20:17:33

标签: javascript node.js express

我想将其添加到node.js express应用程序中的购物车中,而无需刷新或重定向路由。有没有办法做到这一点?这是“添加到购物车”功能的路线:

router.get('/add-to-cart/:id/:pices', function(req, res) {
  var pices = req.params.pices;
  var productId = req.params.id;

  var cart = new Cart(req.session.cart ? req.session.cart : { });

  Product.findById(productId, function (err, product) {
    if (err) {
      return res.redirect('/');
    }
    cart.add(product, product._id, pices);
    req.session.cart = cart;
    res.redirect('/products');
  });
});

如您所见,每次将商品添加到购物车时,我都会重定向到('/ products')。有没有一种解决方法,以使页面不会每次都刷新?

谢谢!

1 个答案:

答案 0 :(得分:1)

这不是后端问题,而是前端问题。我假设您正在使用一个action设置为该端点的表单元素。

您要寻找的是AJAXfetch。不太确定您的前端设计,但我会猜测:

在脚本的前端:

  • 获取yourForm
  • 添加一个submit事件监听器
  • 防止默认事件(重定向)
  • 将获取请求发送到端点
  • 解析{credentials: "include"},以便后端知道要添加到的购物车。 (它发送会话数据)
yourForm.addEventListener("submit", async function (ev) {
    ev.preventDefault();
    await fetch(ev.target.getAttribute("action"), {credentials: "include"});
});

(对于这种类型的操作,您可能还想使用HTTP发布请求)