42

Rfc2616 列出了除 GET 和 POST 之外的许多方法,例如 DELETE、PUT 等。不过,html 表单中的方法字段似乎只允许指定 GET 或 POST。

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

4

6 回答 6

20

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

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

编辑:只是为了给大家一个提示,我认为你仍然需要有 jQuery 才能工作。我删除了 jQuery,它停止了工作;我把它放回去,它开始工作了。

于 2016-02-09T03:02:59.970 回答
17

您当然不能创建使用除GET. 自从 HTML 出现以来,链接就意味着是幂等的并且没有副作用。

对于表单和XMLHTTPRequests,Caps 的链接是查看的地方:PUT、DELETE、HEAD 等方法在大多数 Web 浏览器中都可用吗?.

于 2011-08-03T13:41:23.803 回答
16

默认情况下,不是没有办法做到这一点。链接总是执行 GET,表单可以使用 GET 或 POST

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

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

如果您想了解更多细节,我已经解释了Rails、Rails-UJS 和 Rack如何协同工作来提供此功能。

很高兴知道您的库是如何工作的。

于 2016-05-17T17:07:36.330 回答
3

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

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

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

你可以看看这里:https ://github.com/Ifnot/RestfulizerJs

于 2014-02-19T14:28:55.357 回答
1

@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/

于 2017-03-05T11:07:44.930 回答
-8

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

于 2013-12-05T19:03:56.470 回答