如何将按钮绑定的学生记录_id值传递到GET请求实现成绩更新
推荐实现方案(URL路径参数方式)
这是最符合RESTful规范的实现方式,步骤如下:
第一步:修改marks.ejs中的跳转按钮
直接把_id作为路径参数拼接在跳转链接中,不需要额外处理id属性:
<td><a href="/update/<%= item._id %>" class="btn btn-secondary">Update</a></td>
第二步:修改/update的GET路由,接收路径参数
Express路由支持通过:参数名的方式定义路径参数,直接从req.params中取值即可:
router.get("/update/:id", (req, res) => res.render("update", { reqID: req.params.id }) );
第三步(可选):在update.ejs页使用拿到的_id
可以用隐藏域存储_id,提交修改表单的时候传递给后端接口,方便查询对应数据更新:
<input type="hidden" name="id" value="<%= reqID %>"> <!-- 其他成绩修改字段代码 -->
如果你要使用form表单方案也可以按以下调整:
第一步:修改marks.ejs中的表单
添加隐藏域存储_id,表单提交地址指向自定义的跳转路由即可:
<form method="post" action="/gotoUpdate"> <input type="hidden" name="id" value="<%= item._id %>"> <input type="submit" class="btn btn-secondary" value="Update"> </form>
第二步:修改对应的POST路由,接收id后跳转到带参数的更新页
router.post("/gotoUpdate", function (req, res) { res.redirect(`/update/${req.body.id}`) });
后续的/update/:idGET路由和上面推荐方案一致即可。
内容的提问来源于stack exchange,提问作者vnk
相关产品推荐
相关产品推荐

