mucho mas simple es agregar dentro de la funcion Ajax la validacion de campos, tambien te recomiendo que no establezcas la funcion con tantas varibles que se hace engorrozo ... los valores de los campos los puedes tomar despues por medio de java dentro de la misma fuyncion ajax aqui te dejo codigo que utilizo para hacer lo que tu necesitas y me funciona perfecto:
<script language="JavaScript" type="text/javascript">
//////Objeto ajax
function nuevoAjax(){
var xmlhttp = false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
////////////
function AddNewUser(){/////////funcion que valida los campos y ademas envia por POST los valores
form = document.add_new_user ///nombre del formularoi
form.nombre.className = "text_area"; //campo textbox
form.mail.className = "text_area"; //campo textbox
form.pass1.className = "text_area"; //campo textbox
if (form.nombre.value == '' || form.nombre.value.length <= 4){
div_msg.innerHTML = 'Ingrese un nombre válido.';
form.nombre.className = "inputbox";
form.nombre.focus();
return (false);
}
if (form.mail.value == '' || form.mail.value.length <= 4 || !form.mail.value.match("@") || !form.mail.value.match(".")){
div_msg.innerHTML = 'Ingrese un E-mail válido.';
form.mail.className = "inputbox";
form.mail.focus();
return (false);
}
if (form.pass1.value == '' || form.pass1.value.length < 6){
div_msg.innerHTML = 'Su contraseña debe ser de 6 caracteres o más.';
form.pass1.className = "inputbox";
form.pass2.className = "inputbox";
form.pass1.focus();
return (false);
}
c1 = document.getElementById('loading1'); ///este es un div donde cargo una imagen gif de "cargando"
c3 = document.getElementById('contenedor'); ////este es la capa div donde se mostrara el resultado del php que procesa los datos que enviamos por POST
ajax = nuevoAjax();
c1.innerHTML = '<img src="images/loading.gif"/>'; ///unicacion del gif loader
ajax.open("POST", "add_new_user.php?nocache="+new Date().getTime(),true); //este archivo recoge los datos del formulario y los procesa (le pongo una variable nocache igual a un numero al azar para evitar almacenamiento en cache del navegador)
ajax.onreadystatechange = function() {
if (ajax.readyState ==4) {
c3.innerHTML = ajax.responseText; // luego que se envian los datos por POST se completa el div con los resultados que arroje el archivo add_new_user.php
}
}
datos = "nombre="+form.nombre.value+"&mail="+form.mail.value+"&pass="+form.pass1.value; ///se estableces las variables para enviarlas al PHP
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.setRequestHeader("Accept-Charset", "iso-8859-1");
ajax.send(datos);
}
</script>
Luego el formulario te quedaria simplemente le pones : onsubmit="AddNewUser(); return false;"
este codigo lo utilice para un cliente y lo puedes ver en esta direccion
http://www.araza.cl/index.php?tab=subasta