Si estás realizando una petición asíncrona, debes de cancelar el envío de los datos del formulario para que pueda ejecutarse el código que nos muestras.
En lugar de ejecutar la primera función al darle clic al botón de envío, mejor asígnala al formulario cuando se produzca el evento
submit
que es el que ocurre cuando se envían los datos. El método
preventDefault
es el que necesitas utilizar para eso.
Código Javascript
:
Ver originalfunction cancelar(evento){
evento.preventDefault(); //Cancelo el envío de los datos
valida(); //Ejecuto la primera de tus funciones
}
Saludos