This is the webpage i have been working on..
这里我有多个按钮,我从ejs for循环中获取(编辑按钮,删除按钮)。删除工作正常。但是,当我单击编辑时,第一个编辑按钮不会发送发布请求,但其他按钮会发送。我不明白为什么..... 以下是服务器端代码,
app.post('/todo/edit/:todoId',function(req,res){
//console.log(req.params.todoId);
//res.json({url:'todo-edit'});
res.render('todo-edit',{cat:req.params.todoId});
console.log('dog');
});
<form>
<% for(var i=0;i<todos.length;i++){ %>
<% if(todos[i].done){ %>
<li id="strike"><%= todos[i].item %></li><form action="/todo/edit/<%= todos[i]._id %>" method="post"><button type="submit" class="btn1 <%= todos[i]._id %>">-</button><button id=<%= todos[i]._id %> class="btn2">X</button></form>
<% }else{ %>
<li id="nonStrike"><%= todos[i].item %></li><form action="/todo/edit/<%= todos[i]._id %>" method="post"><button type="submit" class="btn1 <%= todos[i]._id %>">-</button><button id=<%= todos[i]._id %> class="btn2">X</button></form>
<% } %>
<% } %>
</form>
答案 0 :(得分:0)
好的,首先,这里的其他人试图解决这个问题。以下是更易读的格式代码
<form>
<% for(var i=0;i<todos.length;i++){ %>
<% if(todos[i].done){ %>
<li id="strike"><%= todos[i].item %></li>
<form action="/todo/edit/<%= todos[i]._id %>" method="post">
<button type="submit" class="btn1 <%= todos[i]._id %>">-</button>
<button id=<%= todos[i]._id %> class="btn2">X</button>
</form>
<% }else{ %>
<li id="nonStrike"><%= todos[i].item %></li>
<form action="/todo/edit/<%= todos[i]._id %>" method="post">
<button type="submit" class="btn1 <%= todos[i]._id %>">-</button>
<button id=<%= todos[i]._id %> class="btn2">X</button>
</form>
<% } %>
<% } %>
</form>
其次,
你有列表元素(li)没有包含在ul或ol标签中,这是非常糟糕的做法。
最后,由于浏览器技术的限制,您需要查找如何执行“method_override”以创建onw“删除”路由。这样你的行为最终会与此类似。
action =“/ blogs /&lt;%= blog._id%&gt;?_ method = DELETE”
希望这能让你走上正确的道路。