Estoy usando JavaScript y jQuery para escribir un controlador para el formulario que se envía. Según ciertas condiciones, el controlador puede permitir o impedir que se envíe el formulario.
Esto es sencillo, pero se vuelve más complejo por el hecho de que el controlador necesita realizar una llamada AJAX.
El problema es que mi controlador regresará de inmediato con verdadero o falso, pero no obtendré la respuesta de la llamada AJAX hasta más tarde. Pero necesito el resultado de la llamada AJAX para decidir cuál debería ser el valor de retorno.
Parece que esto seguramente debe ser un escenario común. ¿Hay mejores prácticas para manejar este caso?
Mi respuesta sobre la base de lo que se discutió brevemente en los comentarios, hay (al menos) dos soluciones posibles.
Espere a que finalice la llamada ajax y evite el comportamiento predeterminado según la respuesta. (esperar $.ajax / esperar $.post/get)
Puede evitar el comportamiento predeterminado siempre, esperar a que finalice la llamada ajax y ejecutar el comportamiento deseado después. Por ejemplo, con la retención de un envío de formulario.
e.preventDefault(); $ajax... ... ... if (should_not_be_prevented) { $("#myForm").submit() }