Hola:
Te cuento lo que para mí son buenas prácticas. Para empezar, no depender de javascript en la navegación de las páginas, para eso los formularios deben tener su action, método y enctype correctos y que muestren resultados en la página que tengas reservada para ese cometido (con un botón submit, por supuesto)... luego, si quieres usar Ajax, capturar el evento de envío, y hacerlo con el método Ajax (XMLHttpRequest), cancelando el envío del formulario con return false.
Si quieres no usar otra página, el método que yo suelo usar es añadirle una variable adicional; por ejemplo: ajax=si.
Luego en el servidor escribir la página completa si no se cumple la condición de que exista la variable ajax. En caso contrario formatear solo el resultado de la salida...
Sobre usar XML, al menos yo lo suelo usar y me parece una costumbre acertada cuando se quieran datos estructurados, incluso, el destino del formulario puede ser un XML, y con poco esfuerzo lo puedes dejar bonito con una hoja xsl... Te animo a que te informes. Si quieres una referncia, mira este apunte:
Ajax, con X de XML.
Saludos