Saya memiliki beberapa data yang perlu saya ubah ke format JSON dan kemudian POST dengan fungsi JavaScript.
<body onload="javascript:document.myform.submit()">
<form action="https://www.test.net/Services/RegistrationService.svc/InviteNewContact" method="post" name="myform">
<input name="firstName" value="harry" />
<input name="lastName" value="tester" />
<input name="toEmail" value="[email protected]" />
</form>
</body>
Ini adalah tampilan postingan sekarang. Saya membutuhkannya untuk mengirimkan nilai dalam format JSON dan melakukan POST dengan JavaScript.
javascript
json
post
xmlhttprequest
Damjan Pavlica
sumber
sumber
{"firstName":"harry", "lastName":"tester", "toEmail":"[email protected]"}
?Jawaban:
Tidak yakin apakah Anda menginginkan jQuery.
var form; form.onsubmit = function (e) { // stop the regular form submission e.preventDefault(); // collect the form data while iterating over the inputs var data = {}; for (var i = 0, ii = form.length; i < ii; ++i) { var input = form[i]; if (input.name) { data[input.name] = input.value; } } // construct an HTTP request var xhr = new XMLHttpRequest(); xhr.open(form.method, form.action, true); xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); // send the collected data as JSON xhr.send(JSON.stringify(data)); xhr.onloadend = function () { // done }; };
sumber
"cmd":"<img src=0 onerror=alert(1)>"
tidak%3Cimg+src%3D0+onerror%3Dalert%281%29%3E
JSON.stringify
hasil apa pun .html form
tidakJSON.stringify
.Berikut ini contoh menggunakan jQuery ...
<head> <title>Test</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript" src="http://www.json.org/json2.js"></script> <script type="text/javascript"> $(function() { var frm = $(document.myform); var dat = JSON.stringify(frm.serializeArray()); alert("I am about to POST this:\n\n" + dat); $.post( frm.attr("action"), dat, function(data) { alert("Response: " + data); } ); }); </script> </head>
Fungsi jQuery serializeArray membuat objek Javascript dengan nilai formulir. Kemudian Anda dapat menggunakan JSON.stringify untuk mengubahnya menjadi string, jika perlu. Dan Anda juga dapat menghilangkan beban tubuh Anda.
sumber
Contoh lain tersedia di sini:
Mengirim JSON ke server dan mengambil JSON sebagai gantinya, tanpa JQuery
Yang sama dengan jawaban jans, tetapi juga memeriksa respons server dengan menyetel callback onreadystatechange pada XMLHttpRequest.
sumber
Menggunakan objek FormData baru (dan hal-hal ES6 lainnya), Anda dapat melakukan ini untuk mengubah seluruh formulir Anda menjadi JSON:
let data = {}; let formdata = new FormData(theform); for (let tuple of formdata.entries()) data[tuple[0]] = tuple[1];
dan kemudian
xhr.send(JSON.stringify(data));
seperti dalam jawaban asli Jan.sumber