Как указать метод DELETE в ссылке или форме? - PullRequest
31 голосов
/ 03 августа 2011

Rfc2616 перечисляет множество методов, кроме GET и POST, например, например, DELETE, PUT и т. Д. Поле метода в HTML-формах, тем не менее, похоже, может указывать только GET или POST.

Можно ли создать ссылку или форму на html-странице, которая использует метод запроса, который не является GET или POST?

Ответы [ 6 ]

16 голосов
/ 03 августа 2011

Вы, конечно, не можете создать ссылку, которая использует что-либо кроме GET.С момента появления HTML ссылки должны были быть идемпотентными и не иметь побочных эффектов.

Для форм и XMLHTTPRequests ссылка Caps - это то место, куда нужно заглянуть:методы etc, доступные в большинстве веб-браузеров? .

14 голосов
/ 09 февраля 2016

пытался выяснить это для приложения rails, которое использовало Angular на передней части; похоже, что они работают для этой среды:

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

Редактировать: Просто чтобы дать всем понять, я думаю, вам все еще нужно иметь jQuery, чтобы это работало. Я удалил jQuery, и он перестал работать; Я положил его обратно, и он начал работать.

12 голосов
/ 17 мая 2016

По умолчанию не существует способа сделать это. Ссылки всегда выполняют GET, формы могут использовать GET или POST .

Тем не менее, с небольшим количеством JavaScript это возможно. Например, Rails поставляется с помощниками, которые добавят атрибут data-method к ссылкам. Rails-UJS - это библиотека jQuery, которая будет прозрачно перехватывать щелчки по этим ссылкам и инициировать отправку формы с параметром _method, используемым для переопределения обычного метода HTTP. Наконец, Rack перехватит запросы с параметрами _method и перезапишет метод запроса значением _method.

Другие структуры, без сомнения, следуют аналогичной схеме.

Если вы хотите получить еще больше подробностей, я написал объяснение того, как Rails, Rails-UJS и Rack работают вместе, чтобы обеспечить это.

Приятно знать, как работают ваши библиотеки.

4 голосов
/ 19 февраля 2014

Невозможно создать ссылку или форму с методом удаления.

Многие веб-фреймворки создают скрытый ввод "_method" для обработки PUT и DELETE.

Я создал плагин для автоматического преобразования ссылок в формы: RestfulizerJs

Вы можете посмотреть здесь: https://github.com/Ifnot/RestfulizerJs

2 голосов
/ 05 марта 2017

@ Плагин 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/

0 голосов
/ 05 декабря 2013

просто добавьте атрибут метода данных, <a data-method='put' href='whatever'>link</a>

...