link - title html5
¿Cómo especificar el método DELETE en un enlace o formulario? (6)
@Ifnot plugin es genial, ¡pero creé una basada en la función $.ajax
lugar de añadir formularios hidden
! Aquí hay un ejemplo simple para una solicitud 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);
});
Rfc2616 enumera muchos métodos además de GET y POST, como, digamos, BORRAR, PUT, etc. El campo del método en formularios html, sin embargo, parece estar autorizado a especificar solo GET o POST.
¿Es posible crear un enlace o formulario en una página html que usa un método de solicitud que no es GET o POST?
Ciertamente no puedes crear un enlace que use otra cosa que no sea GET
. Desde que comenzó el código HTML, los enlaces deben ser idempotentes y libres de efectos secundarios.
Para formularios y XMLHTTPRequests
, el enlace de mayúsculas es el lugar para buscar: ¿Están los métodos PUT, DELETE, HEAD, etc. disponibles en la mayoría de los navegadores web? .
Estaba tratando de resolver esto para una aplicación de rieles que usaba Angular en la parte delantera; Estos parecen funcionar para ese ambiente:
<a data-confirm="Are you sure?" data-method="delete" href="/link-to-resource" rel="nofollow">Delete</a>
Edición: solo para ayudar a todos, creo que aún necesitas tener jQuery para que esto funcione. Saqué jQuery y dejó de funcionar; Lo devolví y empezó a funcionar.
No es posible crear un enlace o formulario con el método de eliminación.
Muchos frameworks web crean una entrada oculta llamada "_method" para manejar PUT y DELETE.
Creé un complemento para convertir automáticamente enlaces a formularios: RestfulizerJs
Puede echar un vistazo aquí: https://github.com/Ifnot/RestfulizerJs
Por defecto, no hay forma de hacer esto. Los enlaces siempre realizan GET, los formularios pueden usar GET o POST .
Dicho esto, con un poco de JavaScript, es posible. Rails, por ejemplo, se envía con ayudantes que agregarán un atributo de data-method
a los enlaces. Rails-UJS es una biblioteca jQuery que interceptará de forma transparente los clics en estos enlaces y activará un envío de formulario con un parámetro _method
utilizado para anular el método HTTP normal. Finalmente, Rack interceptará las solicitudes con un _method
, y sobrescribirá el método de solicitud con el valor en _method
.
Otros marcos sin duda siguen un patrón similar.
Si desea más detalles, he escrito una explicación de cómo Rails, Rails-UJS y Rack trabajan juntos para proporcionar esto.
Es bueno saber cómo funcionan sus bibliotecas.
simplemente añada un atributo de método de datos, <a data-method=''put'' href=''whatever''>link</a>