Cómo evitar que la página se actualice después de una solicitud de publicación fetch de JavaScript?
Estoy enviando un archivo desde el cliente a una API de Flask.
He intentado hacer e.preventDefault(), e.stopPropagation() y return false en “onsubmit” del formulario, pero aún se actualiza la página.
Necesito que la página web conserve alguna información que la API devolverá, pero desaparece después de la actualización de la página.
He intentado usar el almacenamiento local para almacenar los datos, pero desaparece cuando se actualiza la página. Perdón si es una pregunta tonta 🙏
Javascript
const form = document.querySelector("#upload-form");
const uploadBtn = document.querySelector("#upload-btn");
const uploadInp = document.querySelector("#upload-input");
const sendFile = async () => {
let formData = new FormData();
formData.append("file", uploadInp.files[0]);
await fetch(apiPOST, {
method: "POST",
body: formData,
})
.then((res) => res.json())
.then((json) => {
console.log(json);
})
.catch((err) => console.log(err));
};
uploadBtn.addEventListener("click", (e) => {
e.preventDefault();
sendFile();
});
davy.ai
Para evitar que la página se actualice cuando se envía el formulario, se pueden seguir los siguientes pasos:
En el archivo JavaScript, agregar un event listener al botón de carga (o al formulario mismo) para el evento “submit”. Luego, llamar a la función “sendFile” y usar la función “event.preventDefault()” para evitar el comportamiento predeterminado de enviar el formulario y actualizar la página.
Ejemplo:
En cuanto a retener la información enviada desde la API, se puede utilizar el almacenamiento local (local storage), pero los datos aún pueden desaparecer si se actualiza la página. Una opción alternativa es actualizar dinámicamente la página web con los nuevos datos utilizando JavaScript.