Proponer código de scripting para el envío de datos a una base de datos alojada en la nube mediante el desarrollo de una landing page funcional y atractiva utilizando una plantilla de Bootstrap para la adecuación a los requerimientos específicos.
Copie la URL para acceder al API REST de Firebase. La URL tiene el siguiente patrón:
 https://<nombre-del-proyecto>.firebaseio.com/<nombre-de-la-coleccion>.json
Aquí, <nombre-de-la-coleccion> es el nombre de la colección con la que se interactuará.
Modifique su formulario, y los elementos del formulario, con identificadores únicos, p.e.:
 <form id="form" ... >
     ...
     <input id="form_name" type="text" ... >
     ...
     <select id="form_products"> ... </select>
     ...
     <input id="form_option1" type="radio">
 </form>	
En el archivo de código externo js/main.js, agregue return; para terminar con la ejecución del código en caso de una validación fallida, p.e.:
 let loaded = ( eventLoaded ) => {
       let myform = document.getElementById('form');
          
       myform.addEventListener('submit', (eventSubmit) => {
           eventSubmit.preventDefault(); 
              
           ...
           if (emailText.length === 0) {
             emailElement.animate( ... )
             emailElement.focus()
             return;
           }
       })
     }
Edite el archivo de código externo js/main.js.
 // Reemplaza con tu URL
 const databaseURL = 'https://<nombre-del-proyecto>.firebaseio.com/<nombre-de-la-coleccion>.json'; 
 let sendData = () => {  }
 let ready = () => { ... }
 let loaded = () => { ... }
 ...
 const databaseURL = ...; 
 let sendData = ( ) => {  
     // Obtén los datos del formulario
     const formData = new FormData(form);
     const data = Object.fromEntries(formData.entries()); // Convierte FormData a objeto
 }
 let ready = () => { ... }
 let loaded = () => { ... }
 ...
 const databaseURL = ...; 
 let sendData = ( ) => {  
     ...
     const data = ...
     // new Date().toLocaleString( locales, options )
     data['saved'] = new Date().toLocaleString('es-CO', { timeZone: 'America/Guayaquil' })
 }
 let ready = () => { ... }
 let loaded = () => { ... }
 ...
fetch para enviar datos de un formulario a la URL databaseURL. const databaseURL = ...; 
 let sendData = ( ) => {  
     ...
     data['saved'] = ...
     // Realiza la petición POST con fetch
     fetch(databaseURL, {
         method: 'POST', // Método de la solicitud
         headers: {
             'Content-Type': 'application/json' // Especifica que los datos están en formato JSON
         },
         body: JSON.stringify(data) // Convierte los datos a JSON
     })
     .then(response => {
         if (!response.ok) {
             throw new Error(`Error en la solicitud: ${response.statusText}`);
         }
         return response.json(); // Procesa la respuesta como JSON
     })
     .then(result => {
         alert('Agradeciendo tu preferencia, nos mantenemos actualizados y enfocados en atenderte como mereces'); // Maneja la respuesta con un mensaje
         form.reset()
     })
     .catch(error => {
         alert('Hemos experimentado un error. ¡Vuelve pronto!'); // Maneja el error con un mensaje
     });
 }
 let ready = () => { ... }
 let loaded = () => { ... }
 ...
 const databaseURL = ...; 
 let sendData = ( ) => {  ... }
 let ready = () => { ... }
 let loaded = () => {
    	
 	myform.addEventListener('submit', function (eventSubmit) {
 		...
     	if (emailText.length === 0) {
     		...
     		return;
     	}
     	//Llamada a la función sendData()
     	sendData();
 	});
 }
 ...
For comparison here is how synchronous data fetching would work. pic.twitter.com/GTjqmpnz3K
— Yash (@yashguptaz) March 8, 2020
Asynchronous JavaScript Promises Visualized.
— Yash (@yashguptaz) March 8, 2020
Notice how Web APIs are given the task of processing the request and the output is received back by the main thread.
This shows how single-threaded JavaScript can do async operations.
Animation made by me. pic.twitter.com/p5vprPyxzn
fetch, sincronía, asíncrona, firebase, json, xml, HTTP - GET