能够获取ID,但无法发布请求

时间:2020-08-07 04:46:45

标签: javascript html node.js

我能够路由器获取ID,但是当我到达retireagent html页面并尝试按“提交”按钮以确认代理状态更改时,它说ID未定义。我想通过单击提交按钮来更改代理的状态。是我填写表格的方式吗?

Agent Status

错误消息 enter image description here

nodejs代码

router.get("/retire/:id", function (req, res, next) {
  const AgentId = req.params.id;
  const sql = `SELECT * FROM agentavia WHERE id= ${AgentId}`;
  db.query(sql, function (err, data) {
    if (err) throw err;
    res.render("retireagent", { title: "Agent List", agentData: data});
  });
});

router.put("/retire/:id", function (req, res, next) {
  const AgentId = req.params.id;
  const sql = `UPDATE agentavia SET agentStatus = 'Retired' WHERE id=?`;
  db.query(sql, [AgentId], function (err, data) {
    if (err) throw err;
    console.log(data.affectedRows + " record(s) updated");
  });
  res.redirect("/admin");
});

带有表格和提交按钮的html代码

<form id = "retire" action = "/admin/retire/:id" method = "PUT"> 

<div class="agent-detail">     
   
      <table border="1">
            <tr>
              <th>S.N</th>
              <th>Agent Name</th>
              <th>Agent ID</th>
              <th>AgentStatus</th>
            </tr>
          
            <% if(agentData.length!= 0){ let i=1; agentData.forEach(function(data){ %>
            <tr>
              <td><%=i; %></td>
              <td><%=data.agentName %></td>
              <td><%=data.agentID %></td>
              <td><%=data.agentStatus %></td>
            </tr>
            <% i++; }) %> <% } else{ %>
            <tr>
              <td colspan="7">No Data Found</td>
            </tr>
            <% } %>
          </table>
  </div>
  <button type="submit">Submit</button>
  </form>

1 个答案:

答案 0 :(得分:0)

按如下所示更改您的更新控制器,

通过表单操作(对我来说似乎很难)或使用onSubmit事件从前端传递正确的ID,然后调用该API

router.put("/retire/:id", function (req, res, next) {
  console.log(req.params.id); // <----log this
  const AgentId = req.params.id;
  const sql = `UPDATE agentavia SET agentStatus = 'Retired' WHERE id=?}`;
   db.query(sql, [AgentId], function (err, data) {
    if (err) throw err;
    console.log(data.affectedRows + " record(s) updated");
  });
  res.redirect("/admin");
});

我可能做过语法错误,但您应该了解一下