我能够路由器获取ID,但是当我到达retireagent html页面并尝试按“提交”按钮以确认代理状态更改时,它说ID未定义。我想通过单击提交按钮来更改代理的状态。是我填写表格的方式吗?
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>
答案 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");
});
我可能做过语法错误,但您应该了解一下