veamos...
hay un codigo para manejar el objeto ajax que publicaron en uno de los post de este foro que es el que voy a usar para mostrarte una forma...
Código PHP:
function consultar(pagina, respuesta, metodo, variables){
// Podríamos indicar que estamos cargando los datos.... que espere
// document.getElementById(respuesta).innerHTML = 'Cargando datos...';
// Preparación de la variable 'pagina' en caso de que se haga uso del metodo GET
if(metodo == 'GET'){
pagina = pagina + '?' + variables;
}
else{
if(metodo == ''){
metodo = 'POST';
}
}
// Compatibilidad con FireFox, Opera y cualquier otro BUEN navegador
if(typeof(XMLHttpRequest) != 'undefined'){
try{
var satelite = new XMLHttpRequest();
}
catch(e){ }
}
else{
// Compatibilidad para el navegador más ASQUEROSO del planeta [ IE ]
try{
var satelite = new ActiveXObject('Microsoft.XMLHTTP');
}
catch(e){
var satelite = new ActiveXObject('Msxml2.XMLHTTP');
}
}
// una vez incializado el objeto y definido en el contexto de nuestro script
// Intentaremos abrir la conexión a la dirección indicada por la variable 'pagina'
try{
// esto bien podría cambiar a "satelite.open('GET',pagina,true);" si se desea pasar los datos mediante método GET
satelite.open(metodo,pagina,true);
}
catch(e){
return false;
}
// Esta variable envía una cabecera indicando que enviaremos los datos método 'post' en forma urlencoded
// ejemplo ("mi_variable=cosa&otra_variable=otra_cosa");
satelite.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// Enviamos los datos 'elementos'
satelite.send(variables);
try{
// Justo cuando el estatus de la petición cambia esperamos a que sea igual a 4 que es igual a OK.
satelite.onreadystatechange = function(){
if(satelite.readyState == 4){
// ¡¡¡ Listo !!!, ahora ya tenemos el resultado y podemos acceder a él desde 'satelite.responseText'
// El resultado lo vamos a escribir en el elemento 'respuesta' ...
document.getElementById(respuesta).innerHTML = satelite.responseText
}
}
}
catch(e){
return false;
}
return true;
}
(mi conocimiento de javascript es minimo, asi que quizas son rebuscadas las soluciones, seria cuestion de limpiarlas si estas mas al tanto)
ese seria nuestro objeto el cual procesaria las variables que le envies, pero primero deberias consguir las variables que los campos... asi que una funcion chiquita...
Código PHP:
function armado(pagina,div){
_respuesta = div
_pagina = pagina
_campo1 = document.getElementById("campo1").value
_campo2 = document.getElementById("campo2").value
variables="campo1="+_campo1+"&campo2="+_campo2
consultar(_pagina,_respuesta,"GET",variables);
};
donde pagina es la pagina php que procesara los datos... y div es donde se mostrara (en este caso no seria ninguno, pero te lo paso como lo uso yo si precisas mostrar algo mas en un lugar especifico)
a esa funcion la llamas desde el onBlur... onblur='armado("validacion.php","");'
entonces en el php de validacion recibirias las variables en php para poder hacer todas las comparaciones...
Código PHP:
<?php
$campo1=$_GET["campo1"];
$campo2=$_GET["campo2"];
$radicado=mysql_query("SELECT numero FROM planilla"
$radicado1= mysql_fetch_array($radicado);
$radicado2= $radicado1['numero'];
$largo=strlen(trim($campo1));
$campo2=trim($campo2);
if (($campo1 != "" ) and ($campo2 != "") and ($largo >= 6) and ($campo1 != $radicado2)){
if (is_int($campo1)){
echo "true";
}else{
echo "false";
}else{
echo "false";
};
ahi ya tendriamos un resultado, el satelite.responseText devolvera el texto que salga en validacion.php... que va a ser false en caso de no cumplir los requisitos... asi que ya tendriamos sobre que trabajar...
volvamos al objeto... pero a la ultima funcion nomas...
Código PHP:
satelite.onreadystatechange = function(){
if(satelite.readyState == 4){
// ¡¡¡ Listo !!!, ahora ya tenemos el resultado y podemos acceder a él desde 'satelite.responseText'
// El resultado lo vamos a escribir en el elemento 'respuesta' ...
document.getElementById(respuesta).innerHTML = satelite.responseText
}
}
a esto si en vez de decirlo que lo muestre le hacemos una verificacion...
asi que en vez de
Código PHP:
document.getElementById(respuesta).innerHTML = satelite.responseText
ponemos
Código PHP:
if (satelite.respondeText == "false") {
alert("DEBE CAPTURAR UN VALOR VALIDO EN '+campo2")
campo1.focus()
}
Deberia generar el alert que estas buscando con los datos validados...
CREO que con esto ya deberia darte un resultado, lo hice recien en el momento quizas puede haber algun error de escritura en el codigo pero la logica seria esa... como no te lo podia explicar con palabras de una manera entendible lo pase en modo practico...
proba y modifica :P