[英]Create a href link that uses http DELETE verb in express.js
我刚刚开始使用handlebars.js作为模板来玩express.js,我想创建一个删除链接,该链接应该安静一些,并使用http动词DELETE而不是GET。
我终于想出了一种方法,可以通过以下方式创建链接,添加删除的数据方法,然后在客户端使用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)
在您的情况下,Rails创建一个form
并将其方法设置为您提供的form
:
方法:HTTP动词的符号-此修饰符将动态创建HTML表单,并立即使用指定的HTTP动词提交表单以进行处理。 Rails文档中的link_to
您可以在javascript中实现自己的代码:
var link_to = function (text, href, method) {
return '<form action="' + href + '" method="' + method + '" ><button>'+ text + '</button></form>'
}
您可以使用css将此按钮设置为普通链接的样式。
感谢@tikider,我根据您的建议进行了更多研究,并遇到了一种名为method-override( https://github.com/expressjs/method-override )的中间件。由于我想处理DELETE,因此您的建议相当完整,因为表格可以t发送DELETE
这是我解决的方法,首先我npm安装了method-override:
sudo npm install method-override --save
将其附加到我的应用中间件处理程序:
// override with POST having ?_method=DELETE
app.use(methodOverride('_method'));
然后我认为我将删除按钮设置为
<form method="POST" action="/destroy/{{_id}}?_method=DELETE">
<button type="submit">Delete</button>
</form>
现在,每当我单击删除时,它都会被method-override更改为DELETE,并在我的应用程序中使用中间件进行捕获:
app.delete('/destroy/:id', function(req, res) {
//...
}
当我使用车把模板时,可以将其添加为辅助方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.