Jadi saya mendapatkan formulir HTML ini:
<html>
<head><title>test</title></head>
<body>
<form action="myurl" method="POST" name="myForm">
<p><label for="first_name">First Name:</label>
<input type="text" name="first_name" id="fname"></p>
<p><label for="last_name">Last Name:</label>
<input type="text" name="last_name" id="lname"></p>
<input value="Submit" type="submit" onclick="submitform()">
</form>
</body>
</html>
Manakah cara termudah untuk mengirim data formulir ini sebagai objek JSON ke server saya saat pengguna mengklik kirim?
PEMBARUAN: Saya telah melangkah sejauh ini tetapi tampaknya tidak berhasil:
<script type="text/javascript">
function submitform(){
alert("Sending Json");
var xhr = new XMLHttpRequest();
xhr.open(form.method, form.action, true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
var j = {
"first_name":"binchen",
"last_name":"heris",
};
xhr.send(JSON.stringify(j));
Apa yang saya lakukan salah?
$.ajax
danserialize
di jQuery API.Jawaban:
Dapatkan data formulir lengkap sebagai array dan json merangkai itu.
Anda bisa menggunakannya nanti di ajax. Atau jika Anda tidak menggunakan ajax; taruh di textarea tersembunyi dan berikan ke server. Jika data ini dikirimkan sebagai string json melalui data bentuk normal maka Anda harus mendekodekannya menggunakan json_decode . Anda kemudian akan mendapatkan semua data dalam sebuah array.
sumber
$.ajax
sangat mudah untuk meneruskan data ini.HTML tidak menyediakan cara untuk menghasilkan JSON dari data formulir.
Jika Anda benar-benar ingin menanganinya dari klien, maka Anda harus menggunakan JavaScript untuk:
Anda mungkin lebih baik tetap menggunakan
application/x-www-form-urlencoded
data dan memprosesnya di server daripada JSON. Formulir Anda tidak memiliki hierarki rumit yang akan mendapatkan keuntungan dari struktur data JSON.Perbarui sebagai tanggapan atas penulisan ulang utama pertanyaan ...
readystatechange
penangan, jadi Anda tidak melakukan apa pun dengan responsnyasumber
enctype='application/json'
definisi bentuk untuk membuat data JSON w3.org/TR/html-json-formskode Anda baik-baik saja tetapi tidak pernah dijalankan, karena tombol kirim [type = "submit"] ganti saja dengan type = button
di dalam naskah Anda; formulir tidak diumumkan.
sumber
Saya telat tapi perlu saya sampaikan bagi yang membutuhkan objek, dengan hanya menggunakan html, pasti ada caranya. Di beberapa kerangka kerja sisi server seperti PHP, Anda dapat menulis kode berikut:
Jadi, kita perlu mengatur nama input
object[property]
untuk mendapatkan objek. Dalam contoh di atas, kami mendapatkan data dengan JSON berikut:sumber
Anda dapat mencoba sesuatu seperti:
sumber