我的HTML中的第一个按钮不会请求发布,但其他按钮工作正常

时间:2018-03-31 14:21:26

标签: javascript html node.js express ejs

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>

1 个答案:

答案 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”

希望这能让你走上正确的道路。