Bisakah saya menggunakan metode PUT dalam formulir HTML untuk mengirim data dari formulir ke server?
175
Formulir XHTML 1.x hanya mendukung GET dan POST. GET dan POST adalah satu-satunya nilai yang diizinkan untuk atribut "metode".
Menurut standar HTML , Anda tidak bisa . Satu-satunya nilai yang valid untuk atribut metode adalah
get
danpost
, sesuai dengan metode GET dan POST HTTP.<form method="put">
tidak valid HTML dan akan diperlakukan seperti<form>
, yaitu mengirim permintaan GET.Sebagai gantinya, banyak kerangka kerja hanya menggunakan parameter POST untuk tunnel metode HTTP:
Tentu saja, ini membutuhkan pembukaan sisi server.
sumber
Ya Anda bisa, tetapi perlu diingat bahwa itu tidak akan menghasilkan PUT tetapi permintaan GET. Jika Anda menggunakan nilai yang tidak valid untuk
method
atribut<form>
tag, browser akan menggunakan nilai defaultget
.Anda juga dapat menawarkan formulir, tetapi alih-alih mengirimkannya, buat dan jalankan XMLHttpRequest menggunakan metode PUT dengan JavaScript.
sumber
PUT /resource
.HttpRequest.getParameterMap()
tidak mengembalikan parameter formulir._method
solusi bidang tersembunyiTeknik sederhana berikut digunakan oleh beberapa kerangka kerja web:
tambahkan
_method
parameter tersembunyi ke formulir apa pun yang bukan GET atau POST:Ini dapat dilakukan secara otomatis dalam kerangka kerja melalui metode pembantu pembuatan HTML.
perbaiki metode form aktual ke POST (
<form method="post"
)memproses
_method
di server dan melakukan persis seolah-olah metode yang telah dikirim bukan POST yang sebenarnyaAnda dapat mencapai ini di:
form_tag
@method("PATCH")
Dasar pemikiran / sejarah mengapa itu tidak mungkin dalam HTML murni: /software/114156/why-there-are-no-put-and-delete-methods-in-html-forms
sumber
@method("PATCH")
POST
dan bukan apa yang sebenarnya Anda butuhkan.Sayangnya, browser modern tidak menyediakan dukungan asli untuk permintaan HTTP PUT. Untuk mengatasi batasan ini, pastikan atribut metode formulir HTML Anda adalah "posting", lalu tambahkan metode override parameter ke formulir HTML Anda seperti ini:
Untuk menguji permintaan Anda, Anda dapat menggunakan "tukang pos" ekstensi google chrome
sumber
Untuk mengatur metode PUT dan HAPUS saya lakukan sebagai berikut:
Kemudian JS bertindak untuk melakukan metode yang diinginkan:
Dengan fungsi-fungsi ini didefinisikan, saya menambahkan pendengar acara ke tombol-tombol yang membuat permintaan metode formulir:
Dan untuk tombol hapus pada formulir PUT:
_ - - - - - - - - - -
Artikel ini https://blog.garstasio.com/you-dont-need-jquery/ajax/ banyak membantu saya!
Di luar ini, Anda dapat mengatur fungsi postMethod dan getMethod untuk menangani metode POST dan GET mengirimkan yang Anda inginkan sebagai gantinya perilaku default browser. Anda dapat melakukan apa pun yang ingin Anda gunakan sebagai gantinya
location.reload()
, seperti menampilkan pesan perubahan yang berhasil atau penghapusan yang sukses.= - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = -
JSFiddle: https://jsfiddle.net/enriquerene/d6jvw52t/53/
sumber