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