Foros del Web » Programando para Internet » Javascript »

Función no retorna el valor (Extraño)

Estas en el tema de Función no retorna el valor (Extraño) en el foro de Javascript en Foros del Web. Amigos, Tengo una funcion Javascript que busca un valor en la base de datos para ver si está duplicado (Ajax) y debería retornar una variable ...
  #1 (permalink)  
Antiguo 25/02/2007, 01:05
Avatar de luisvasquez  
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 5 meses
Puntos: 6
Función no retorna el valor (Extraño)

Amigos,

Tengo una funcion Javascript que busca un valor en la base de datos para ver si está duplicado (Ajax) y debería retornar una variable con un mensaje, pero no lo hace. Bueno, lo hace cuando antes del return, le pongo un alert..

A ver si pueden darme una mano:
Código:
function email_duplicado(valor)
{
   // alert(valor); valor entra bien porque lo muestra en el alert
    var mensaje = '';
	if(valor!=0)
	{	
		ajax=ObjetoAjax();

	// Envio al servidor el valor y el campo a validar
        // Este asp busca en la bd y escribe "Duplicado" para que lo tome 
       //  el ajax.responseText
		ajax.open("GET", "email_duplicado_en_bd.asp?valor="+valor, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==4)
			{
				// Coloco en la fila contenedora los datos que recibo del servidor
				if (ajax.responseText == 'Duplicado')
				{
				   mensaje = 'El email ya está registrado en la base de datos. Si usted ya se registró, debe ir a la opción : Su cuenta ---> Ingresar al sistema.';
                                  // OJO 01 
                                  //alert(mensaje); el mensaje se muestra, es decir, 
                                 // entra en el IF
                                 // return mensaje;
					  
			    }
			} 
		}
                  ajax.send(null);
                // OJO 02: alert(mensaje); cuando pongo este alert, me muestra 
               // en blanco el mensaje, sin embargo solo colocandolo retorna el    
              // valor en la función.
		
	        return mensaje;
	
	}
	
}

ahora paso a explicar un poco como se ha comportado la funcion.

Originalmente funcionaba porque no requeria retornar ningun valor, solo hacía un alert con el mensaje.

El asunto es que necesito poner TODOS los errores en una sola ventana de alert y lo que voy haciendo es concatenar todos los errores para mostrarlos al final. Esta función es solo de la parte que valida el email duplicado y debería retornar el mensaje para que la función que la llama lo concatene.

Les puedo mencionar los siguientes puntos:

1- El valor que entra como parametro está ok porque se muestra en un alert.

2.- el asp email_duplicado_en_bd.asp funciona correctamente porque lo he probado aparte.

3.- Cuando el email está duplicado se mete en el if ajax.responseText == 'Duplicado'

4.- (OJO 01) Luego de asignarle el valor a la variable hago un alert y se muestra bien. Asi funcionaba originalmente.

5.- Si hago el return mensaje; despues de el alert o sin él, retorna un valor UNDEFINED. Supongo que esto es porque no he hecho el ajax.send(null)

6.- (OJO 02) pongo el return mensaje luego del ajax.send(null) entonces retorna un valor vacío. No undefined como el punto anterior.

7.- Alli es donde viene lo (más) confuso, si le agrego un alert antes del return, me lo muestra VACIO, sin embargo RETORNA CORRECTAMENTE EL VALOR!!
Al quitar el alert, me retorna un valor vacio nuevamente.

Quiero decir que si le pongo un alert antes, cumple la función de enviar el mensaje de retorno, pero me abre 2 ventanas, el alert que estoy obligado a poner para que funcione y el otro alert que lleva todos los mensajes de error concatenados. Es una función que llama a otras que retornan mensajes. Al recibirlos los concatena y los muestra todos en una sola ventana.

Yo no se mucho (por no decir nada) de Javascript y por eso supongo que alguno de ustedes puede ver si hay una burrada evidente

Creo que el error tiene que ver con la combinación de un javascript que usa Ajax y que a su vez retorna un valor. Todas las funciones Ajax que he visto solo hacen alert para mostrar el resultado.

No se que hace el ajax.send(null); pero se que es necesario para que funcione correctmente. Intenté (lanzando flechas) poner ajax.send(mensaje) pero no funcionó...

Saludos y gracias a todos por su ayuda,
Luis Vásquez

Última edición por luisvasquez; 25/02/2007 a las 01:11
  #2 (permalink)  
Antiguo 12/11/2009, 15:59
 
Fecha de Ingreso: abril-2005
Mensajes: 6
Antigüedad: 19 años
Puntos: 0
Respuesta: Función no retorna el valor (Extraño)

Hola no sé si has resuelto tu problema.. pero si lo has hecho de favor me podrias indicar como es que lo hiciste?
  #3 (permalink)  
Antiguo 12/11/2009, 16:17
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Función no retorna el valor (Extraño)

Hola perezosa

Te recuerdo el aviso que había al final de este tema y que parece que no has leído.



Tema cerrado.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:15.