J'ai donc ce formulaire HTML:
<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>
Quel serait le moyen le plus simple d'envoyer les données de ce formulaire en tant qu'objet JSON à mon serveur lorsqu'un utilisateur clique sur Soumettre?
MISE À JOUR: Je suis allé aussi loin que cela mais cela ne semble pas fonctionner:
<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));
Qu'est-ce que je fais mal?
$.ajax
etserialize
dans l'API jQuery.Réponses:
Obtenez des données de formulaire complètes sous forme de tableau et json stringify.
Vous pourrez l'utiliser plus tard dans ajax. Ou si vous n'utilisez pas ajax; placez-le dans une zone de texte cachée et passez au serveur. Si ces données sont passées sous forme de chaîne json via des données de forme normale, vous devez les décoder à l'aide de json_decode . Vous obtiendrez alors toutes les données dans un tableau.
la source
$.ajax
il est vraiment facile de transmettre ces données.HTML ne fournit aucun moyen de générer du JSON à partir de données de formulaire.
Si vous voulez vraiment le gérer à partir du client, vous devrez alors recourir à l'utilisation de JavaScript pour:
Vous feriez probablement mieux de vous en tenir aux
application/x-www-form-urlencoded
données et de les traiter sur le serveur au lieu de JSON. Votre formulaire n'a pas de hiérarchie compliquée qui bénéficierait d'une structure de données JSON.Mise à jour en réponse à une réécriture majeure de la question…
readystatechange
gestionnaire, vous ne faites donc rien avec la réponsela source
enctype='application/json'
à la définition de formulaire pour créer des données JSON w3.org/TR/html-json-formsvotre code est correct mais jamais exécuté, cause du bouton d'envoi [type = "submit"] il suffit de le remplacer par type = bouton
à l'intérieur de votre script; la forme n'est pas déclarée.
la source
Je suis en retard mais je dois dire que pour ceux qui ont besoin d'un objet, n'utilisant que du HTML, il y a un moyen. Dans certains frameworks côté serveur comme PHP, vous pouvez écrire le code suivant:
Donc, nous devons configurer le nom de l'entrée comme
object[property]
pour obtenir un objet. Dans l'exemple ci-dessus, nous avons obtenu une donnée avec le JSON suivant:la source
Vous pouvez essayer quelque chose comme:
la source