[英]How can I pass parameters to route with navigate function in react?
[英]how can i pass an array of parameters to route?
我想使用我的 ejs 视图中的复选框从 MySQL db 删除一些行到 node.js 和 React 应用程序的路由。 我可以删除一行,但如何传递参数数组?
这是我的路由器删除功能:
router.get("/delete/:id", function (request, res, next) {
var id = request.params.id;
const sql = `DELETE FROM users WHERE id = "${id}" `;
这是带有 id 的“删除按钮 html 代码”,用于从 ejs 文件中删除一行:
<a href="/users/delete/<%=data.id%>" class="btn btn-danger btn-sm">Delete</a>
我可以删除一行,但不能一次删除更多行。
首先,您应该使用 DELETE 而不是 GET 方法来删除路由器中的单行。
您可以使用 POST 方法将一组输入发送到服务器。 所以只需要为名称为“shouldDelete[]”或您喜欢的其他名称的每一行放置一个复选框。
使用括号将输入数组发送到服务器很重要。 然后你应该使用<form>
发送你的 POST 请求。
客户:
<form action="/groupDelete" method="POST">
<input type="checkbox" name="shouldDelete[]" value="ROW_ID_HERE" for="row1">
<input type="checkbox" name="shouldDelete[]" value="ROW_ID_HERE" for="row2">
<input type="checkbox" name="shouldDelete[]" value="ROW_ID_HERE" for="row3">
<button type="submit">Send</button>
</form>
服务器:
router.post("/groupDelete", function (request, res, next) {
var groupIds = request.body.shouldDelete;
const sql = `DELETE FROM users WHERE id IN ("${groupIds.join(',')}") `;
注意:查询数据库时请遵守安全注意事项。
const urlencodedParser = express.urlencoded({ extended: false });
router.post("/groupDelete", urlencodedParser, function (request, res, next) {
var groupIds = request.body.shouldDelete;
const sql = `DELETE FROM users WHERE id IN (${groupIds.join(",")}) `;
console.log(sql);
db.query(sql, function (err, data) {
if (err) {
throw err;
} else {
res.redirect("/users/user-list");
}
});
});
<form action="/users/groupDelete" method="POST">
<input
type="checkbox"
name="shouldDelete"
id="34"
value="34"
for="row1"
/>
<input
type="checkbox"
name="shouldDelete"
id="36"
value="36"
for="row3"
/>
<button type="submit">Send</button>
</form>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.