Validar formulario AJAX-PHP e imprimir respuesta

Iniciado por ZharkD, 15 Julio 2010, 01:50 AM

0 Miembros y 1 Visitante están viendo este tema.

ZharkD

Buenas,

Pues recien me inicio en AJAX y me gustaria saber que estoy haciendo mal (valla sorpresa no!).
Bueno pues basicamente esto es lo que debe hacer el script:
1- El usaurio introduce texto.
2- El usuario sale del campo de texto (onblur).
3- Entra el codigo AJAX (javascript) y manda los valores al script PHP.
4- El script PHP valida y regresa una respuesta.
5- AJAX recive la respuesta de PHP y lo imprime al instante.
6- Se repite en varios campos.
7- Una vez que pasan todas las validaciones en cada campo (independiente cada uno) se envia el formulario.

Bien, esto es lo que tengo:
index.php
Código (html) [Seleccionar]
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
<script>
function revisar(campo)
{
var http_request;
if (window.XMLHttpRequest) // Mozilla, Safari, ...
{
     http_request = new XMLHttpRequest();
}
else if (window.ActiveXObject) // Internet Explorer
{
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
http_request.open("POST", "valida.php", true);
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http_request.send(campo+"="+document.campo.value);
http_request.onreadystatechange = function()
{
      if(http_request.readyState == 4)
      {
            if(http_request.responseText == 0)
            {
document.write("<h1>Listo</h1>");
}
else
{
document.write("<h1>Error, Nombre Menor a 3 digitos</h1>");
}
        }
}
}
</script>
</head>
<body>
<form action="#" enctype="multipart/form-data" method="post">
<input id="Nombre" name="Nombre" onblur="revisar('Nombre');" type="textbox" />
<input type="Submit" value="Enviar" />
</form>
</body>
</html>


y este es el valida.php
Código (php) [Seleccionar]
if(strlen($_POST['Nombre'])<3)
return 0;
else
return 1;


Y eso no me esta generando absolutamente nada, alguien me puede ayduar con eso? Disculpen si es un poco tonto pero pues voy empezando y es lo que aprendi de ver algunos ejemplos.
Desde ya muchas gracias por su atencion y paciencia.

devnull111

<form action="#" enctype="multipart/form-data" method="post">
   <input id="Nombre" name="Nombre" onblur="revisar('Nombre')" type="textbox" />
   <input type="Submit" value="Enviar" />

En lo que te he puesto en negrita prueba esto:
onblur="revisar(this.value)"

Cambia tambien el type textbox por type text.
Y luego cuéntame qué tal :)

Saludos.

ZharkD

Cita de: devnull111 en 15 Julio 2010, 05:21 AM
<form action="#" enctype="multipart/form-data" method="post">
   <input id="Nombre" name="Nombre" onblur="revisar('Nombre')" type="textbox" />
   <input type="Submit" value="Enviar" />

En lo que te he puesto en negrita prueba esto:
onblur="revisar(this.value)"

Cambia tambien el type textbox por type text.
Y luego cuéntame qué tal :)

Saludos.
Hola,

Cambiado a quedado asi:
Código (html) [Seleccionar]
<form action="#" enctype="multipart/form-data" method="post">
<input id="Nombre" name="Nombre" onblur="revisar(this.value)" type="text" />
<input type="Submit" value="Enviar" />
</form>

Pero sigue sin funcionar.

devnull111

http_request.send(campo+"="+document.campo.value)
document.campo.value no entiendo muy bien lo que hace, estas refiriendote a un objeto que creo que no existe. ¿No bastará con referirte al parámetro de la función?
Cambialo por este: http_request.send(campo+"="+campo)

Y cuéntame qué tal

Saludos

ZharkD

Cita de: devnull111 en 17 Julio 2010, 01:38 AM
http_request.send(campo+"="+document.campo.value)
document.campo.value no entiendo muy bien lo que hace, estas refiriendote a un objeto que creo que no existe. ¿No bastará con referirte al parámetro de la función?
Cambialo por este: http_request.send(campo+"="+campo)

Y cuéntame qué tal

Saludos
Hola!
Ya lo muestra! :D
ahora el unico problema, es que me borra el cuadro cuando salgo de el, es decir onblur me borra el campo de texto y simplemente me escribe el encabezado, que por cierto, aunque sea mayor a 3 caracteres NUNCA cumple la condicion :S
Alguna idea?

Muchas gracias potr tu ayuda :)