如何在链接或表单中指定DELETE方法?

时间:2011-08-03 12:33:52

标签: html5 hyperlink httpverbs http-delete rfc2616

Rfc2616列出了除GET和POST之外的许多方法,例如DELETE,PUT等。但是html格式的方法字段似乎只允许指定GET或POST。

是否可以在html页面中创建使用非GET或POST请求方法的链接或表单?

6 个答案:

答案 0 :(得分:16)

您当然无法创建使用GET以外的任何内容的链接。自HTML开始以来,链接一直是幂等的,没有副作用。

对于表单和XMLHTTPRequests,可以查看“Caps”链接:Are the PUT, DELETE, HEAD, etc methods available in most web browsers?

答案 1 :(得分:15)

试图为前端使用Angular的rails应用程序解决这个问题;这些似乎适用于那种环境:

<a data-confirm="Are you sure?" data-method="delete" href="/link-to-resource" rel="nofollow">Delete</a>

编辑:只是为了让每个人都站起来,我认为你仍然需要使用jQuery来实现这个目标。我删除了jQuery,它停止了工作;我把它放回去了,它开始工作了。

答案 2 :(得分:11)

默认情况下,没有办法做到这一点。链接always perform GETs, forms can use GETs or POSTs

也就是说,用一点JavaScript,它是可能的。例如,Rails附带了帮助程序,它们会为链接添加data-method属性。 Rails-UJS是一个jQuery库,它将透明地拦截这些链接上的点击,并触发一个带有_method参数的表单提交,用于覆盖普通的HTTP方法。最后,Rack将使用_method参数拦截请求,并使用_method中的值覆盖请求方法。

其他框架无疑也遵循类似的模式。

如果你想了解更多细节,我已经写了一份关于Rails, Rails-UJS, and Rack如何共同提供这些内容的解释。

了解你的图书馆是如何运作的。

答案 3 :(得分:4)

无法使用删除方法创建链接或表单。

许多Web框架创建了一个名为“_method”的隐藏输入来处理PUT和DELETE。

我创建了一个插件,用于自动将链接转换为表单:RestfulizerJs

您可以在此处查看:https://github.com/Ifnot/RestfulizerJs

答案 4 :(得分:2)

@Ifnot插件很棒,但我创建了一个基于$.ajax函数的插件而不是附加hidden表单!这是DELETE请求

的简单示例

<强> HTML

<button class="delete" data-target="http://example.com/post/post-id/" data-method="DELETE" data-disabled="true">Delete Article</button>

<强>的JavaScript

$(".delete").restintag(optionsObj, function(data) {
    console.log(data);
},
function(error) {
    console.log(error);
});
  

https://github.com/KhaledElAnsari/RESTInTag/

答案 5 :(得分:-5)

只需添加数据方法属性<a data-method='put' href='whatever'>link</a>

即可