Estoy usando javascript y Node JS para crear un sitio web para recopilar datos para mi investigación de escritura. El sitio web está diseñado con una serie de páginas web y cada página alberga una tarea de escritura o escritura diferente. Los participantes deben completar una tarea en una página, hacer clic en el botón Enviar para publicar los datos en el lado del servidor y hacer clic en Siguiente para pasar a la página siguiente hasta llegar a la última página del estudio. Para su información, aquí está el sitio web que creé: https://writingresearch.herokuapp.com .
Sin embargo, aquí surge un problema: en algunos casos, cuando la conexión a Internet en el lado del cliente es débil o inestable, los datos pueden tardar algún tiempo (digamos, más de 2 segundos) en llegar al lado del servidor para su procesamiento. En otras palabras, el participante del estudio puede ir a la página siguiente antes de que sus datos publicados se procesen con éxito en el lado del servidor. Si esto sucede, el lado del servidor termina perdiendo los datos. Por lo tanto, me pregunto si existe un método para habilitar la comunicación entre el lado del servidor y el lado del cliente para que el usuario del sitio web no pueda ir a la página siguiente hasta que su solicitud de publicación se procese con éxito. ¿Alguien sabe cómo hacer esto en Node JS? Espero haber explicado claramente mi pregunta. Gracias por su tiempo y atención. ¡¡¡Realmente aprecio tu ayuda!!!
Al presionar el botón enviar, debe hacer lo siguiente:
Deshabilite el botón "Enviar" para que el usuario no vuelva a enviar otra solicitud POST haciendo clic en el botón Enviar nuevamente. Muestre un cargador en algún lugar para que el usuario pueda saber que se está enviando la respuesta.
Deshabilite el botón "Siguiente" hasta que reciba una respuesta exitosa del servidor.
Al recibir una respuesta exitosa del servidor, habilite ambos botones y muestre una notificación (como un cuadro de alerta) informando que la respuesta se envió con éxito.
Si recibe un error del servidor, muestre también el error en la notificación (o en el cuadro de alerta) y habilite ambos botones.