Posso usar um método PUT em um formulário HTML para enviar dados do formulário para um servidor?
175
Os formulários XHTML 1.x suportam apenas GET e POST. GET e POST são os únicos valores permitidos para o atributo "method".
De acordo com o padrão HTML , você não pode . Os únicos valores válidos para o atributo method são
get
epost
, correspondendo aos métodos HTTP GET e POST.<form method="put">
é HTML inválido e será tratado como<form>
, por exemplo, envie uma solicitação GET.Em vez disso, muitas estruturas simplesmente usam um parâmetro POST para encapsular o método HTTP:
Obviamente, isso requer desembrulhar do lado do servidor.
fonte
Sim, você pode, mas lembre-se de que isso não resultará em uma solicitação PUT, mas em uma solicitação GET. Se você usar um valor inválido para o
method
atributo da<form>
tag, o navegador usará o valor padrãoget
.Como alternativa, você pode oferecer um formulário, mas, em vez de enviá-lo, crie e dispare um XMLHttpRequest usando o método PUT com JavaScript.
fonte
PUT /resource
.HttpRequest.getParameterMap()
que não retornamos parâmetros de formulário._method
solução alternativa de campo ocultoA seguinte técnica simples é usada por algumas estruturas da web:
adicione um
_method
parâmetro oculto a qualquer formulário que não seja GET ou POST:Isso pode ser feito automaticamente em estruturas através do método auxiliar de criação de HTML.
corrija o método de formulário real para POST (
<form method="post"
)processos
_method
no servidor e faça exatamente como se esse método tivesse sido enviado em vez do POST realVocê pode conseguir isso em:
form_tag
@method("PATCH")
Justificativa / histórico do motivo pelo qual não é possível em HTML puro: /software/114156/why-there-are-no-put-and-delete-methods-in-html-forms
fonte
@method("PATCH")
POST
e não é o que você realmente precisava.Infelizmente, os navegadores modernos não fornecem suporte nativo para solicitações HTTP PUT. Para contornar essa limitação, verifique se o atributo do método do seu formulário HTML é "post" e adicione um parâmetro de substituição de método ao seu formulário HTML como este:
Para testar seus pedidos, você pode usar "Postman" uma extensão do google chrome
fonte
Para definir os métodos PUT e DELETE, execute o seguinte:
Em seguida, o JS atua para executar os métodos desejados:
Com essas funções definidas, adiciono um ouvinte de evento aos botões que solicitam o método do formulário:
E para o botão remover no formulário PUT:
_ - - - - - - - - - - -
Este artigo https://blog.garstasio.com/you-dont-need-jquery/ajax/ me ajuda muito!
Além disso, você pode definir a função postMethod e getMethod para manipular os métodos de envio POST e GET conforme desejar, em vez do comportamento padrão do navegador. Você pode fazer o que quiser
location.reload()
, como mostrar a mensagem de alterações bem-sucedidas ou exclusão bem-sucedida.= - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - -
JSFiddle: https://jsfiddle.net/enriquerene/d6jvw52t/53/
fonte