Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Pequeña y sencilla duda sobre como ejecutar una funcion AJAX

Estas en el tema de Pequeña y sencilla duda sobre como ejecutar una funcion AJAX en el foro de Frameworks JS en Foros del Web. Hola amigos, verán hace poco comence con la programacion en javascript, y hoy intente tambien incorporar ajax para consultar en la base de datos si ...
  #1 (permalink)  
Antiguo 19/05/2010, 21:20
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Pequeña y sencilla duda sobre como ejecutar una funcion AJAX

Hola amigos, verán hace poco comence con la programacion en javascript, y hoy intente tambien incorporar ajax para consultar en la base de datos si existia el texto puesto en el formulario.

Todo el javascript está correcto, pero la parte en AJAX no funciona, más preciso de la linea 39 a las 55. Es donde estoy metiendo el Ajax (un código que me encontre en la web) pero estoy metiendolo en una function como si fuera js, lo cierto es que no se como funciona esto.

Me podrían ayudar.
Gracias.

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2. function xmlhttp(){
  3.         var xmlhttp;
  4.         try{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
  5.         catch(e){
  6.             try{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
  7.             catch(e){
  8.                 try{xmlhttp = new XMLHttpRequest();}
  9.                 catch(e){
  10.                     xmlhttp = false;
  11.                 }
  12.             }
  13.         }
  14.         if (!xmlhttp)
  15.                 return null;
  16.             else
  17.                 return xmlhttp;
  18.     }
  19.  
  20. function validar(){
  21.         var username = document.getElementById('username').value,
  22.             ajax = xmlhttp();
  23.            
  24.         //Actualizar   
  25.         function updateTips(t){
  26.            document.getElementById('validateTips').innerHTML = t;  
  27.         }
  28.        
  29.         //Validar campos de formulario
  30.         function checkEmpty(a,b){
  31.            if( a.length <= 0 ) { updateTips("Debes escribir un "+b+"."); return false; } else { return true; } 
  32.         }
  33.        
  34.         //validar caracteres alfanumericos
  35.         function checkRegexp(a,regexp,b){
  36.           if( !(regexp.test(a)) ){ updateTips("Solo se permiten caracteres alfanuméricos"); return false; } else { return true; }  
  37.         }
  38.        
  39.         //Buscar en la base de datos
  40.         function findUser(){
  41.             ajax.onreadystatechange=function(a,b){
  42.                 if(ajax.readyState==1){
  43.                         updateTips(b);
  44.                     }
  45.                 if(ajax.readyState==4){
  46.                         updateTips(ajax.responseText);
  47.                     }
  48.                 if(query.length<=0){
  49.                         updateTips(ajax.responseText);
  50.                     }
  51.             }
  52.         ajax.open("GET","checkUser.php?q="+encodeURIComponent(a),true);
  53.         ajax.send(null);
  54.         return false;
  55.         }
  56.        
  57.         var bValid = true;
  58.        
  59.         bValid = bValid && checkEmpty(username,"Nombre de usuario");
  60.         bValid = bValid && checkRegexp(username,/^[\w\,.!¿?'áéíóúÁÉÍÓÚñÑ\-@\s]+$/i,"Nombre de usuario");
  61.         bValid = bValid && findUser(username,"<img src='images/loading.gif' alg='Loading...'>");
  62.        
  63.         if(bValid) { updateTips("Todo correcto"); }
  64.     }
  65. </script>
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Última edición por iovan; 19/05/2010 a las 22:36 Razón: Por alguna extraña razon escribí hola en el titulo XD
  #2 (permalink)  
Antiguo 19/05/2010, 23:26
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Pequeña y sencilla duda sobre como ejecutar una funcion AJAX

Hola:

Ten cuidado con el sangrado de tu código, que por poco iba a decirte que no habías creado el objeto ajax... pero después lo encontré con un sangrado que parecía un condicionante...

Creo que deberías sacar el onreadystatechange de la función donde la has metido... o hacer la llamada antes de la petición, pero no le encuentro mucho sentido tenerlo dentro de esa función... a veces, hacer código modularizado complican innecesariamente la implementación.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 20/05/2010, 10:58
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Pequeña y sencilla duda sobre como ejecutar una funcion AJAX

hola caricatos, Gracias por tu ayuda.

Lo que pasa es que no se el significado de las funciones ajax, como por ejemplo onreadystatechange que no entiendo que significa o que hace.

Como lo compilarias tu.

Te lo agradezco mucho.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #4 (permalink)  
Antiguo 20/05/2010, 17:21
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Pequeña y sencilla duda sobre como ejecutar una funcion AJAX

Hola:

Normalmente, las cosas que empiezan por on son manejadores de eventos, y los eventos es el resto... o sea readystatechange... o sea el cambio de estado.

Resumiendo, hay que programar la reacción a los cambios de estado. Lo de los estados, no lo tengo demasiado claro, pero algo así como petición, aceptación o reconocimiento de la petición envío de datos y datos formateados en xml... o sea que el cambio con readystate == 4 es que se pueden leer los datos como xml; el 3 es que se puede leer como texto plano, y requiere procesamiento (lo más fácil es innerHTML/eval/json -creo que parseJson o algo así... no suelo usarlo... solo he trabajado con xml-)... y esta última opción la tienes encerrada en una función, o sea que te faltaría llamarla, pero más sencillo aún, tal como puse antes es sacarla de la función.

De todos modos, irás aprendiendo poco a poco.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 20/05/2010 a las 22:35 Razón: ortografía
  #5 (permalink)  
Antiguo 20/05/2010, 21:57
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Pequeña y sencilla duda sobre como ejecutar una funcion AJAX

Gracias Caricatos.

Voy a dejar por el momento esta forma de llamar al Ajax. Seguire solo con JS y con PHP simple are la comprobación del usuario en la db.

Saludos. ;)
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #6 (permalink)  
Antiguo 21/05/2010, 14:22
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 14 años
Puntos: 1
Respuesta: Pequeña y sencilla duda sobre como ejecutar una funcion AJAX

Hola :) .. bueno si quieres validar si existe un dato de tu formulario en la base de datos puedes hacer lo siguiente..

por lo general yo hago esto..

Esta funcion para obtener el objecto ajax..

Código:
	function getObjectAjax () {
		var xmlHttp ;
		if (window.ActiveXObject) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		} else if (window.XMLHttpRequest) {
			xmlHttp = new XMLHttpRequest();
		}
		return xmlHttp;
	}

	function checkLogin(){
		var login = document.getElementById("login") ;
		var ajax = getObjectAjax() ;
                // es una url de ejemplo noma :)...
		var url = "urldetuweb/services/valid/login/" + login.value ;
		ajax.open( "post", url );
		ajax.onreadystatechange = function () {
			if ( ajax.readyState == 4 ) {
                                  // Aqui realizas la accion que quieras
                                  alert( ajax.responseText );
			}
		}
		ajax.send(null);
		return false;
	}
Si te fijas bien el " ajax.readyState" devuelve 4 cuando se haya completado la carga de la Url que estas pidiendo

ajax.responseText te retornara lo que hayas escrito desde esa url
Ej.

url = localhost/check.php

y en ese archivo escribes "<a>prueba</a>"

ajax.responseText te devolverá "<a>prueba</a>"

Te recomiendo que uses JSon tambien ...
Para mas informacion sobre ajax espero te sirva esta url
http://www.ajaxya.com.ar/

No es complicado.. espero te sirva
  #7 (permalink)  
Antiguo 21/05/2010, 22:24
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Pequeña y sencilla duda sobre como ejecutar una funcion AJAX

muchoas gracias ya lo tengo solucionado ;)
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: ajax, ejecutar, funcion, pequeña, sencilla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:33.