J'ai des données que j'ai besoin de convertir au format JSON, puis de les POSTER avec une fonction 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>
Voici à quoi ressemble le message maintenant. J'en ai besoin de soumettre les valeurs au format JSON et de faire le POST avec JavaScript.
javascript
json
post
xmlhttprequest
Damjan Pavlica
la source
la source
{"firstName":"harry", "lastName":"tester", "toEmail":"[email protected]"}
?Réponses:
Je ne sais pas si vous voulez 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 }; };
la source
"cmd":"<img src=0 onerror=alert(1)>"
pas%3Cimg+src%3D0+onerror%3Dalert%281%29%3E
JSON.stringify
retour.html form
notJSON.stringify
.Voici un exemple utilisant 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>
La fonction jQuery serializeArray crée un objet Javascript avec les valeurs de formulaire. Ensuite, vous pouvez utiliser JSON.stringify pour convertir cela en une chaîne, si nécessaire. Et vous pouvez également supprimer votre corps sous charge.
la source
Un autre exemple est disponible ici:
Envoi d'un JSON au serveur et récupération d'un JSON en retour, sans JQuery
Ce qui est identique à la réponse de jans, mais vérifie également la réponse du serveur en définissant un rappel onreadystatechange sur XMLHttpRequest.
la source
En utilisant le nouvel objet FormData (et d'autres éléments ES6), vous pouvez le faire pour transformer tout votre formulaire en JSON:
let data = {}; let formdata = new FormData(theform); for (let tuple of formdata.entries()) data[tuple[0]] = tuple[1];
et ensuite
xhr.send(JSON.stringify(data));
comme dans la réponse originale de Jan.la source