【问题标题】:add to cart nodejs mysql ejs添加到购物车 nodejs mysql ejs
【发布时间】:2020-09-15 05:17:40
【问题描述】:

我想将产品添加到我的购物车,我对差异页面使用不同的路线。所以在我的 app.js 文件中,我有网页需要的路由,但是我无法让我的 id 显示在我的 ejs 视图中。有人可以帮忙吗?下面是我的代码。我认为问题在于单击添加到购物车按钮时没有显示 id

<!DOCTYPE html>
<html lang="en">

<head>
    <% include partials/head %>
</head>

<body>
    <% include partials/menu %>

    <!--Product Cards-->
    <div class="container">
        <!-- Traverse through Database data-->
        <% productsData.forEach(function(result) { %>
        <div class="card">
            <div class="imgBx">
                <img src="<%= result.imagePath %>" alt="">
            </div>
            <div class="contentBox">
                <h2><%= result.prod_title %></h2>
                <h3>$<%= result.price %></h3>
                <div class="size">
                    <h3>Size :</h3>
                    <span><%= result.size %></span>

                </div>
                <a class="add-cart" href="/addToCart/<%= this.id %>">ADD TO CART</a>
            </div>
        </div>
        <% }); %>

    </div>
</body>
<% include partials/script %>

</html>



router.get('/', function (req, res){
    var productId = req.params.id;
    var cart = new Cart(req.session.cart ? req.session.cart : {items: {}} );

    var sql = 'SELECT prod_id FROM product';
    databaseConnection.query(sql, function(err, results, fields) {
        if (err){
            throw err;
        } else {
            cart.add(results, results.id);
            req.session.cart = cart;
            console.log(req.session.cart);
            res.redirect('/shop');

        }
    });
});





// Import Routes 
var homeRouter = require('./routes/home');
var signInRouter = require('./routes/signIn');
var shopRouter = require('./routes/shop');
var registerRouter = require('./routes/register');
var signOutRouter = require('./routes/signOut');
var cartRouter = require('./routes/addToCart');

// Use Routes
app.use('/', homeRouter);
app.use('/signIn', signInRouter);
app.use('/shop', shopRouter);
app.use('/register', registerRouter);
app.use('/signOut', signOutRouter);
app.use('/addToCart/:id', cartRouter);

【问题讨论】:

    标签: mysql node.js ejs


    【解决方案1】:

    如果您在此处使用result 变量:

    <h2><%= result.prod_title %></h2>
    <h3>$<%= result.price %></h3>
    

    我只假设您应该在此处使用它来生成添加到购物车的链接:

    href="/addToCart/<%= result.id %>"
    

    关于你所拥有的:

    href="/addToCart/<%= this.id %>"
    

    但是,如果您在与路由器定义不同的位置设置路径参数,则需要使用var router = express.Router({ mergeParams: true }); 指定的here

    【讨论】:

    • 还是不行。仍然找不到 404 错误页面。我可以通过输入路线手动使其工作,但我无法让添加到购物车按钮工作。所以我知道问题出在我的 ejs 标签上
    • 你在手动输入什么,当你右键点击链接并选择“复制链接位置”(或等效)选项时会得到什么
    • 当我输入路线“/addToCart/:Id”时,它可以工作。但是,当我单击具有相同路线的标签链接时,它不起作用。它带来了 404 错误
    • 你输入文字/:Id?
    • 是的,因为我必须对其进行测试,看看是否是错误的 ejs 标签
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2020-05-30
    相关资源
    最近更新 更多