Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

247
Vistas
Crear un archivo json desde un formulario html

Tengo un formulario html y quiero crear un archivo json con datos introducidos en campos html.
En este momento, está visible en el texto json de la consola, pero no crea un nuevo archivo json con este contenido.
Además, tengo un error, Uncaught ReferenceError: require no está definido.
 // get the form element from dom const formElement = document.querySelector('form#forms') // convert the form to JSON const getFormJSON = (form) => { const data = new FormData(form); return Array.from(data.keys()).reduce((result, key) => { if (result[key]) { result[key] = data.getAll(key) return result } result[key] = data.get(key); return result; }, {}); }; // handle the form submission event, prevent default form behaviour, check validity, convert form to JSON const handler = (event) => { event.preventDefault(); const valid = formElement.reportValidity(); if (valid) { const result = getFormJSON(formElement); // handle one, multiple or no files uploaded const images = [result.images].flat().filter((file) => !!file.name) // handle one, multiple or no languages selected const languages = [result.languages || []].flat(); // convert the checkbox to a boolean const isHappyReader = !!(result.isHappyReader && result.isHappyReader === 'on') // use spread function, but override the keys we've made changes to const output = { ...result, images, languages, isHappyReader } console.log(output) } } formElement.addEventListener("submit", handler) const fs = require('fs'); const dataNew = JSON.stringify(output); fs.writeFile('output.json', dataNew, (err) => { if (err) { console.log("error") throw err; } console.log("JSON data is saved."); }); </script> </body>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Parece que estás en el frontend. No puede escribir archivos como este debido a la seguridad. Esto daría como resultado que todos los sitios web con algo de JavaScript puedan escribir archivos en su sistema y usted realmente no quiere eso. Además, fs es una API de nodo que no está disponible en el navegador.

Una opción sería descargar el archivo JSON desde la interfaz, lo que podría hacer con el siguiente código:

 /** * Download a JSON file. * @param {sting} filename filename * @param {any} obj any serializeable object */ function downloadJson(filename, obj) { // serialize to JSON and pretty print with indent of 4 const text = JSON.stringify(obj, null, 4); // create anchor tag var element = document.createElement("a"); element.setAttribute( "href", "data:application/json;charset=utf-8," + encodeURIComponent(text) ); element.setAttribute("download", filename); // don't display the tag element.style.display = "none"; // add tag to document document.body.appendChild(element); // click it: this starts the download element.click(); // remove the tag again document.body.removeChild(element); } window.addEventListener("DOMContentLoaded", (event) => { // Start file download. downloadJson("helloWorld.json", { hello: "World" }); });

Si agrega eso a su página, aparecerá el cuadro de diálogo Guardar en el sistema de un usuario. Aquí el que estoy recibiendo en Ubuntu:

Guardar cuadro de diálogo en Ubuntu para helloWorld.json

Y aquí el contenido del archivo descargado: contenido helloWorld.json después de la descarga

Lea este hilo sobre los pros y los contras de usar un enfoque como este.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda