He intentado console.log
y recorrerlo usando for in
.
Aquí está la referencia de MDN en FormData.
Ambos intentos están en este violín .
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);
}
¿Cómo puedo inspeccionar los datos del formulario para ver qué claves se han configurado?
javascript
form-data
Penny Liu
fuente
fuente
key of fd
lugar dekey in fd
. No sé por qué esto es técnicamente todavía, pero funciona. Documentación aquí .Respuestas:
Método actualizado:
A partir de marzo de 2016, las versiones recientes de Chrome y Firefox ahora admiten el uso
FormData.entries()
para inspeccionar FormData. Fuente .¡Gracias a Ghost Echo y a Rloth por señalar esto!
Vieja respuesta:
Después de mirar estos artículos de Mozilla , parece que no hay forma de obtener datos de un objeto FormData. Solo puede usarlos para crear FormData para enviar a través de una solicitud AJAX.
También acabo de encontrar esta pregunta que dice lo mismo: FormData.append ("clave", "valor") no funciona .
Una forma de evitar esto sería crear un diccionario regular y luego convertirlo a FormData:
Si desea depurar un objeto FormData simple, también puede enviarlo para examinarlo en la consola de solicitud de red:
fuente
myFormData.entries()
var formData = new FormData(formElement)
. Si está utilizando jQuery, por lo tanto, se puede hacer esto:var formData = new FormData($('#formElementID')[0])
. Luego agregue datos según sea necesario.FormData
en IE / Edge: stackoverflow.com/questions/37938955/…Respuesta corta
Respuesta más larga
Si desea inspeccionar cómo se vería el cuerpo sin procesar, entonces podría usar el constructor de Respuesta (parte de la API de búsqueda)
Algunos de deseo sugieren registrar cada entrada de las entradas, pero el
console.log
también puede tomar varios argumentosconsole.log(foo, bar)
Para tomar cualquier número de argumentos que podría utilizar el
apply
método y llamarlo como tal:console.log.apply(console, array)
.Pero hay una nueva forma ES6 de aplicar argumentos con el operador extendido y el iterador
console.log(...array)
.Sabiendo esto, y el hecho de que FormData y ambas matrices tienen un
Symbol.iterator
método en su prototipo, simplemente puede hacer esto sin tener que recorrerlo o llamar.entries()
para obtener la retención del iteradorfuente
[...fd]
...
desde formdata para crear la nueva matriz con todos los elementos, luego la consola simplemente descarga el resultado de la última línea que escribióYo uso el
formData.entries()
método No estoy seguro de todo el soporte del navegador, pero funciona bien en Firefox.Tomado de https://developer.mozilla.org/en-US/docs/Web/API/FormData/entries
También existe
formData.get()
yformData.getAll()
con un soporte de navegador más amplio, pero solo muestran los Valores y no la Clave. Vea el enlace para más información.fuente
for (const pair of formData.entries()) { console.log(pair[0], pair[1]); }
ES6
función y funcionará solo en ciertos navegadores. Excluyendo cualquier versión de IE según MDNEn ciertos casos, el uso de:
es imposible.
He usado este código en reemplazo:
No es un código muy inteligente, pero funciona ...
Espero que sea de ayuda.
fuente
done
primero.done
es la bandera autorizada; sidone
es falso o no se especifica, entoncesvalue
es un elemento válido (incluso si contiene el valorundefined
). Cuandodone
está presente ytrue
, se ha alcanzado el final de la secuencia, yvalue
ni siquiera tiene que definirse. Sivalue
se define cuandodone
estrue
, entoncesvalue
se interpreta como el valor de retorno del iterador. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Cuando estoy trabajando en Angular 5+ (con TypeScript 2.4.2), intenté lo siguiente y funciona excepto un error de comprobación estática pero
for(var pair of formData.entries())
tampoco funciona.Mostrar fragmento de código
Comprobar en Stackblitz
fuente
(value, key) => {..
. Un dolor de cabeza !Método fácil
Usé este código en angular 8
fuente
Soluciones ES6 +:
Para ver la estructura de los datos del formulario:
Para ver cada par clave-valor:
fuente
Aquí hay una función para registrar entradas de un objeto FormData en la consola como un objeto.
MDN doc en
.entries()
MDN doc
.next()
y.done
fuente
fuente
for...of..
. Un dolor de cabeza !Tienes que entender que
FormData::entries()
devuelve una instancia deIterator
.Tome este formulario de ejemplo:
y este bucle JS:
fuente
En angular 7 obtuve entradas en la consola usando la siguiente línea de código.
fuente
Ya respondió, pero si desea recuperar valores de una manera fácil de un formulario enviado, puede usar el operador de propagación combinado con la creación de un nuevo Mapa iterable para obtener una estructura agradable.
new Map([...new FormData(form)])
fuente
en
typeScript
deangular 6
, este código está trabajando para mí.o para todos los valores:
fuente
Prueba esta función:
fuente
El MDN sugiere la siguiente forma:
Alternativamente
Considere agregar ES + Polyfills , en caso de que el navegador o el entorno no sean compatibles con la última versión de JavaScript y FormData API.
Espero que esto ayude.
fuente
formData()
debe ser capitalizado, en primer lugar. Además, sufor ... of loop
línea 3 está llamando implícitamente a FormData.entries, puede ver esto ejecutándosenew FormData()[Symbol.iterator]
en la consola. Finalmente, si ejecuta esto en navegadores como Edge, que no son compatibles con FormData.entries, obtendrá resultados inesperados, como imprimir los nombres de métodos disponibles en el objeto FormData:>>> var data = new FormData(); data.append("Foo", "Bar"); for(let x in data){console.log(x)};
<<< 'append'