![](/img/trans.png)
[英]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.