Maison > Article > interface Web > Expliquez pourquoi JS doit être sérialisé avant de soumettre le formulaire
Javascript est un langage de programmation largement utilisé dans les frontaux Web. Dans le développement Web, la soumission de formulaire est une opération très courante, et en Javascript, les données du formulaire doivent généralement être sérialisées avant de soumettre le formulaire. Cet article vise à explorer pourquoi Javascript doit être sérialisé avant de soumettre un formulaire et comment la sérialisation est implémentée.
1. Pourquoi avez-vous besoin de sérialiser les données des formulaires
En HTML, les formulaires sont un moyen basique de collecter les informations saisies par l'utilisateur. Lorsque l'utilisateur clique sur le bouton Soumettre, le formulaire est automatiquement soumis au serveur backend pour traitement. En Javascript, nous devons souvent soumettre les données du formulaire de manière asynchrone via la technologie AJAX pour éviter les sauts de page. Avant de soumettre les données du formulaire, celles-ci doivent être sérialisées dans un format de chaîne, puis envoyées au serveur principal pour traitement via la technologie AJAX.
Alors pourquoi avez-vous besoin de sérialiser les données du formulaire ? En effet, lorsque le formulaire est soumis, le navigateur encodera automatiquement les données du formulaire et remplacera les caractères spéciaux et les espaces par le format d'encodage URL. Par exemple, les espaces seront convertis en « %20 ». Le format de codage URL est sécurisé pendant la transmission, mais le décodage est requis pendant le traitement du serveur en arrière-plan pour obtenir les données originales. Par conséquent, afin d'éviter que le serveur backend ne puisse décoder correctement les données, nous devons sérialiser les données du formulaire et les convertir au format chaîne avant de les soumettre.
2. Méthodes de sérialisation des données de formulaire
En Javascript, les données de formulaire peuvent être sérialisées des deux manières suivantes.
FormData est un type de données nouvellement introduit en HTML5. Il peut convertir les données de formulaire en un objet formData, ce qui facilite l'utilisation de la technologie AJAX pour télécharger des fichiers de manière asynchrone ou soumettre des données de formulaire en Javascript. L'avantage d'utiliser l'objet FormData pour sérialiser les données de formulaire est qu'il prend en charge le téléchargement de plusieurs fichiers en même temps.
La méthode d'implémentation spécifique est la suivante :
const form = document.querySelector('#myForm'); const formData = new FormData(form);
Après avoir construit les données du formulaire dans un objet formData, vous pouvez utiliser la technologie AJAX pour soumettre les données du formulaire de manière asynchrone.
Étant donné que l'objet FormData ne prend pas en charge les navigateurs d'IE 9 et versions antérieures, nous devons écrire nous-mêmes du code pour sérialiser les données du formulaire. Voici une fonction qui peut sérialiser les données d'un formulaire au format chaîne :
function serialize(form) { let data = ''; for(let i = 0; i < form.elements.length; i++) { let field = form.elements[i]; if(field.type !== 'checkbox' && field.type !== 'radio' || field.checked) { data += encodeURIComponent(field.name) + '=' + encodeURIComponent(field.value) + '&'; } } return data.slice(0, -1); }
Cette fonction reçoit un formulaire en tant que paramètre, puis sérialise ses données au format chaîne en parcourant les éléments du formulaire.
3. Conclusion
En Javascript, la sérialisation d'un formulaire est une étape importante avant de soumettre les données du formulaire. La sérialisation du formulaire peut éviter le problème selon lequel le serveur principal ne peut pas décoder correctement les données et, en même temps, il peut facilement utiliser la technologie AJAX pour la soumission et le traitement asynchrones. Pour les navigateurs qui ne prennent pas en charge les objets FormData, nous pouvons écrire notre propre fonction de sérialisation pour sérialiser les données du formulaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!