gpt4 book ai didi

javascript - 在express.js中创建使用http DELETE动词的href链接

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:39 26 4
gpt4 key购买 nike

我刚刚开始玩express.js,使用handlebars.js作为我的模板我想创建一个删除链接,该链接应该是安静的并使用http动词DELETE而不是 GET。

我终于找到了一种通过创建如下链接来实现它的方法,添加delete数据方法,然后在客户端使用jquery拦截我使用 DELETE 动词的链接。

我的链接是:

<a href="/destroy/{{_id}}" data-method="delete">delete</a>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$("a[data-method='delete']").click(function(){
$.ajax({
url: this.getAttribute('href'),
type: 'DELETE'
})
return false
})
</script>

这是在express.js/handlebars.js中实现这一目标的推荐方法吗?,有人有更好的方法来实现这一目标吗?,我还没有找到类似于rails在其助手中如何实现这一目标的东西,例如:

link_to("Destroy", "http://www.example.com", method: :delete)

最佳答案

谢谢@tikider,我根据你的建议做了更多研究,发现了一个名为方法覆盖的中间件( https://github.com/expressjs/method-override ),因为我想处理 DELETE 你的建议非常完整,因为表单无法发送 DELETE

这就是我解决它的方法,首先我 npm 安装了方法覆盖:

sudo npm install method-override --save

将其附加到我的应用程序中间件处理程序:

// override with POST having ?_method=DELETE
app.use(methodOverride('_method'));

然后我的 View 我将删除按钮设置为

<form method="POST" action="/destroy/{{_id}}?_method=DELETE">
<button type="submit">Delete</button>
</form>

现在,每次我单击“删除”时,它都会通过方法覆盖更改为“DELETE”,并使用像我的应用程序中这样的中间件捕获:

app.delete('/destroy/:id', function(req, res) {
//...
}

由于我正在使用 Handlebars 模板,因此我可以将其添加为辅助方法。

关于javascript - 在express.js中创建使用http DELETE动词的href链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27058516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com