Gracias mpozo. Utilicé el código que me presentaste, lo adapté y funciona.
var producto = $("#inpt-producto").val();
Código Javascript
:
Ver originalif(producto!=""){
encontrado = foo(); // Realiza consulta al servidor. El dato retornado es único y no deben exister 2 o más iguales
}
if(nombre==""){
$("#mensajes").html("El campo Nombre está vacio");
datosValidos = false;
}else
if(encontrado==1){
$("#Mensaje").html("Por favor digite otro producto.");
$("#inpt-producto").focus();
datosValidos = false;
}
......
mas validaciones....
......
......
if(datosValidos){
//Guardar datos en la BD
}
function foo()
{
var producto = $("#inpt-producto").val();
var datos = "producto=" + producto ;
url = 'producto.php',
ajax = new XMLHttpRequest(),
u = null;
ajax.open('POST', url, false);
ajax.onreadystatechange = function()
{
if (ajax.readyState == 4)
{
if (ajax.status == 200){
u = ajax.responseText;
}
}
};
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Connection", "close");
ajax.send(datos);
return u;
}
Solo un pequeño detalle. Por el momento la llamada al ser "síncrona". Lo dejaré así por un tiempo.
Mientras investigaba, encontré acerca del método "Deferred Object" de jQuery.
No lo conozco o nunca lo he utilzado. Menciona sobre llamadas asíncronas.
Para el caso que expuse en este foro, había pensado cambiar(probar) la forma de consultar a la BD obtener el valor de "encontrado". Es decir,pasar de AJAX nativo a usar AJAX con jQuery. Nunca he utilizado este método "Deferred Object".
Se aplica a mi caso?
También había encontrado sobre las "Promise", tal como lo menciona @Alexis88
Muchas gracias
saludos