nodejs处理循环创建的表单

时间:2018-07-17 10:50:45

标签: html node.js ejs

尝试通过编写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方法?我如何知道按下了哪个提交按钮,以便可以将该游戏添加到用户的存储桶中? (尚未实现存储桶)
也许我应该为页面上的每个游戏创建新动作?像<form mathod="post" action="/buyItem <% + i %>">一样,但仍然如何捕获这些动作?

1 个答案:

答案 0 :(得分: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>