¿Entonces ya lo solucionaste?
Cita: Entonces, si no se hace preventDefault al submit, entonces se envía el formulario, se actualiza el documento y por tanto no se ve la respuesta en pantalla, porque el AJAX quedó atrás, antes que la página se actualizara.
Exacto.
Cita: Pero aún así, ¿no debería verse al menos por un instante la respuesta en pantalla, justo antes que se refresque la pantalla?
Supongo que es inapreciable, ya que el envío se realiza al terminar la ejecución del script, cosa que lleva una décima de segundo.
Cita: Si tiene que cancelarse la acción por defecto del submit, ¿tiene sentido un input type=submit en un formulario que trabajará con AJAX?
Tiene que cancelarse porque en este caso, estás reemplazando el envio normal de un formulario (GET o POST), por una petición asíncrona vía AJAX.
Cita: ¿en este caso, mejor utilizo un <button>?
También podrías usar un simple botón, pero entonces tendrías que trabajar con el evento
onclick del botón y no con el
onsubmit del formulario. Dos eventos muy distintos.