J'ai essayé de le console.log
parcourir en utilisant for in
.
Voici la référence MDN sur FormData.
Les deux tentatives sont dans ce violon .
var fd = new FormData(),
key;
// poulate with dummy data
fd.append("key1", "alskdjflasj");
fd.append("key2", "alskdjflasj");
// does not do anything useful
console.log(fd);
// does not do anything useful
for(key in fd) {
console.log(key);
}
Comment puis-je inspecter les données du formulaire pour voir quelles clés ont été définies.
javascript
form-data
Penny Liu
la source
la source
key of fd
au lieu dekey in fd
. Je ne sais pas encore pourquoi c'est techniquement, mais ça marche. Documentation ici .Réponses:
Méthode mise à jour:
Depuis mars 2016, les versions récentes de Chrome et Firefox prennent désormais en charge l'utilisation
FormData.entries()
pour inspecter FormData. Source .Merci à Ghost Echo et rloth de l' avoir signalé!
Ancienne réponse:
Après avoir consulté ces articles Mozilla , il semble qu'il n'y ait aucun moyen d'extraire des données d'un objet FormData. Vous ne pouvez les utiliser que pour créer FormData à envoyer via une demande AJAX.
Je viens également de trouver cette question qui dit la même chose: FormData.append ("clé", "valeur") ne fonctionne pas .
Un moyen de contourner ce problème serait de créer un dictionnaire standard, puis de le convertir en FormData:
Si vous souhaitez déboguer un objet FormData ordinaire, vous pouvez également l'envoyer afin de l'examiner dans la console de demande réseau:
la source
myFormData.entries()
var formData = new FormData(formElement)
. Si vous utilisez JQuery, vous pouvez donc le faire:var formData = new FormData($('#formElementID')[0])
. Ajoutez ensuite les données selon vos besoins.FormData
dans IE / Edge: stackoverflow.com/questions/37938955/…Réponse courte
Réponse plus longue
Si vous souhaitez inspecter l'apparence du corps brut, vous pouvez utiliser le constructeur Response (qui fait partie de l'API fetch)
Certains souhaitent suggérer d'enregistrer chaque entrée d'entrées, mais le
console.log
peut également prendre plusieurs arguments.console.log(foo, bar)
Pour prendre un nombre quelconque d'arguments, vous pouvez utiliser le
apply
méthode et l' appeler en tant que tel:console.log.apply(console, array)
.Mais il existe une nouvelle façon ES6 d'appliquer des arguments avec l' opérateur de propagation et l'itérateur
console.log(...array)
.Sachant cela, et le fait que FormData et les deux tableaux ont une
Symbol.iterator
méthode dans leur prototype, vous pouvez simplement le faire sans avoir à faire une boucle dessus, ou appeler.entries()
pour obtenir la prise de l'itérateurla source
[...fd]
...
étalez les entrées avec from formdata pour créer le nouveau tableau avec tous les éléments, puis la console vide simplement le résultat de la dernière ligne que vous avez écriteJ'utilise la
formData.entries()
méthode. Je ne suis pas sûr de la prise en charge de tous les navigateurs, mais cela fonctionne bien sur Firefox.Tiré de https://developer.mozilla.org/en-US/docs/Web/API/FormData/entries
Il existe également
formData.get()
etformData.getAll()
avec un support de navigateur plus large, mais ils n'affichent que les valeurs et non la clé. Voir le lien pour plus d'informations.la source
for (const pair of formData.entries()) { console.log(pair[0], pair[1]); }
ES6
fonctionnalité qui ne fonctionnera que dans certains navigateurs. Exclusion de toute version d'IE selon MDNDans certains cas, l'utilisation de:
est impossible.
J'ai utilisé ce code en remplacement:
Ce n'est pas un code très intelligent, mais ça marche ...
J'espère que c'est de l'aide.
la source
done
abord.done
est le drapeau faisant autorité; sidone
est faux ou non spécifié, alorsvalue
est un élément valide (même s'il contient la valeurundefined
). Quanddone
est présent ettrue
, la fin de la séquence a été atteinte etvalue
n'a même pas besoin d'être définie. Sivalue
est défini quanddone
esttrue
, alorsvalue
est interprété comme la valeur de retour de l'itérateur. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Lorsque je travaille sur Angular 5+ (avec TypeScript 2.4.2), j'ai essayé comme suit et cela fonctionne sauf une erreur de vérification statique mais
for(var pair of formData.entries())
ne fonctionne pas non plus.Afficher l'extrait de code
Vérifiez à Stackblitz
la source
(value, key) => {..
. Un mal de tête !Méthode facile
J'ai utilisé ce code en angulaire 8
la source
Solutions ES6 +:
Pour voir la structure des données du formulaire:
Pour voir chaque paire clé-valeur:
la source
Voici une fonction pour enregistrer les entrées d'un objet FormData dans la console en tant qu'objet.
Doc MDN sur
.entries()
Doc MDN sur
.next()
et.done
la source
la source
for...of..
. Un mal de tête !Vous devez comprendre que
FormData::entries()
renvoie une instance deIterator
.Prenez cet exemple de formulaire:
et cette boucle JS:
la source
Dans angular 7, j'ai obtenu des entrées sur la console en utilisant la ligne de code ci-dessous.
la source
Déjà répondu, mais si vous souhaitez récupérer facilement des valeurs à partir d'un formulaire soumis, vous pouvez utiliser l'opérateur de diffusion combiné à la création d'une nouvelle carte itérable pour obtenir une belle structure.
new Map([...new FormData(form)])
la source
dans
typeScript
deangular 6
, ce code fonctionne pour moi.ou pour toutes les valeurs:
la source
Essayez cette fonction:
la source
Le MDN propose la forme suivante:
Alternativement
Envisagez d'ajouter ES + Polyfills , au cas où le navigateur ou l'environnement ne prend pas en charge les dernières API JavaScript et FormData.
J'espère que ça aide.
la source
formData()
devrait être capitalisé, premièrement. En outre, votrefor ... of loop
ligne 3 appelle implicitement FormData.entries, vous pouvez le voir en exécutantnew FormData()[Symbol.iterator]
dans la console. Enfin, si vous l'exécutez dans des navigateurs comme Edge, qui ne prennent pas en charge FormData.entries, vous obtenez des résultats inattendus, tels que l'impression des noms de méthode disponibles sur l'objet FormData:>>> var data = new FormData(); data.append("Foo", "Bar"); for(let x in data){console.log(x)};
<<< 'append'