我在這里有一個表格,其中使用了洗掉方法:
<form action="/article/<%= articles[i]._id %>" method="DELETE"><button class="btn btn-danger" type="submit">Delete</button></form>
然后我的文章 ID 的路線如下所示:
const articleById = require('../controllers/article/articleById')
router.get('/:id', articleById)
const deleteArticleById = require('../controllers/article/deleteArticleById')
router.delete('/:id', authLoggedIn, deleteArticleById)
該表單應該使用 router.delete 及其控制器,但它使用的是 router.get 并使用該控制器。我通過在每個控制器中使用 console.log 驗證了這一點,當我提交該表單時,它會將我發送到 router.get。我不確定如何讓表單使用 router.delete。
uj5u.com熱心網友回復:
HTML 表單不支持 PUT、PATCH、DELETE 方法。表單僅支持 GET 和 POST 方法。這就是為什么 method="DELETE" 不起作用,而是呼叫 GET。
但是您可以使用方法覆寫包覆寫此行為。 http://expressjs.com/en/resources/middleware/method-override.html
var express = require('express')
var methodOverride = require('method-override')
var app = express()
// override with POST having ?_method=DELETE
app.use(methodOverride('_method'))
<!-- HTML Form using DELETE -->
<form method="POST" action="/resource?_method=DELETE">
<button type="submit">Delete</button>
</form>
uj5u.com熱心網友回復:
<form action="/article/<%= articles[i]._id %>" method="POST">
<input type="hidden" name="_method" value="DELETE">
<button class="btn btn-danger" type="submit">Delete</button></form>
**試試這種方式**
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/490366.html
上一篇:如何更改選項的高度?
