【问题标题】:nodejs handle form created in loopnodejs处理循环创建的表单
【发布时间】:2018-12-25 01:08:23
【问题描述】:

尝试通过编写 PC 游戏商店原型来学习 Node.JS。
我在主页上展示了我的 MySQL 数据库中的每个游戏。

router.get('/', function(req, res){
  database.connection.query("select * from games", function(err, rows, fields){
    if(err) console.log(err);
    res.render('main', {rows: rows});
});

HTML:

<% for (var i = rows.length-1; i >= 0; i--) { %>
  <form method="post" action="/buyItem">
    <div style="float:left;" class="Game">
      <div class="text">
        <label><%= rows[i].name %></label> <br>
        <label><%= rows[i].category %></label>
      </div>
      <img src="<%= rows[i].image %>"> <br>
      <label><%= rows[i].price %> </label> <br>
      <button type="submit" class="button">Purchase</button>
      <br> <br> <br> 
    </div>
  </form>
  <% } %>

我该如何针对这种情况实施 post 方法?我如何知道按下了哪个提交按钮,以便我可以将此游戏添加到用户的存储桶中? (桶还没有实现)
也许我应该为页面上的每个游戏创建新动作?喜欢&lt;form mathod="post" action="/buyItem &lt;% + i %&gt;"&gt;,但我仍然如何捕捉这些动作?

【问题讨论】:

    标签: html node.js ejs


    【解决方案1】:

    您只能创建单个表单。并点击按钮,获取游戏ID并执行购买功能。

    <form mathod="post" action="/buyItem">
    
    for (var i = rows.length-1; i >= 0; i--){ 
    <div style="float:left;" class="Game">
      <div class="text">
        <label><%= rows[i].name %></label> <br>
        <label><%= rows[i].category %></label>
      </div>
      <img src="<%= rows[i].image %>"> <br>
      <label><%= rows[i].price %> </label> <br>
      <button type="submit" class="button" onclick="purchase(rows[i].id)">Purchase</button>
      <br> <br> <br> 
    </div> }  
    
    </form>
    

    【讨论】:

    • 我应该在哪里执行购买功能?在post方法中?如何将rows[i].id 转至帖子?我认为应该像purchase = function(id){ console.log(id); } router.post('/buyItem', urlencodedParser, function(req, res, next, id){ purchase(id); });
    猜你喜欢
    • 2021-04-25
    • 2019-11-29
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多