Foros del Web » Programando para Internet » Javascript »

Problema en enviar variables entre funciones

Estas en el tema de Problema en enviar variables entre funciones en el foro de Javascript en Foros del Web. Hola foreros!, Llevo un tiempo intentando enviar variables entre dos funciones pero me da errores algo complejos. Las dos funciones se encargar de hacer peticiones ...
  #1 (permalink)  
Antiguo 23/05/2010, 15:54
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Problema en enviar variables entre funciones

Hola foreros!,

Llevo un tiempo intentando enviar variables entre dos funciones pero me da errores algo complejos. Las dos funciones se encargar de hacer peticiones asincronomas... ajax.

Lo que deseo es enviar el nombre del formulario que requiere el ajax, mirar el codigo es sencillo:

Funcion que crea la llamada:
Código Javascript:
Ver original
  1. //connection
  2.     function _conection(formulario,url,value,method)
  3.         {
  4.             if (window.ActiveXObject)
  5.                 {
  6.                     try{request = new ActiveXObject("Msxml2.XMLHTTP");}
  7.                     catch(e)
  8.                         {
  9.                             try{request = new ActiveXObject("Microsoft.XMLHTTP");}
  10.                             catch(e){request = false;}
  11.                         }
  12.                 }
  13.             if (request)
  14.                 {
  15.                     request.onreadystatechange = _load(formulario);
  16.                     request.open(method, url);
  17.                     request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
  18.                     request.send(value);
  19.                 }
  20.         }

Funcion en recibir los datos
Código Javascript:
Ver original
  1. //load
  2.         function _load(formulario)
  3.             {
  4.                 if (request.readyState == 4)
  5.                     {
  6.                         if (request.status == 200)
  7.                             {
  8.                                 //recibida la informacion
  9.                                 alert(formulario);
  10.                                 return false;
  11.                             }
  12.                     }
  13.                 else
  14.                     {
  15.                         //cargando             
  16.                     }
  17.             }

Como veis la variable que envio es "formulario". La recibe _connection como "formulario" y la envia a _load en "request.onreadystatechange = _load(formulario);", pero al terminar el proceso la funcion _load a perdido el contenido de la variable.


Lo he probado con variables globales, es decir, almacenar el contenido en una funcion externa... eso funciona, pero ahora me encuentro con que no puedo hacerlo. Asi que mi pregunta es:

¿Como podria hacer el envio de la variable entre funciones correctamente en este caso?, segun creo es por que se llama variables veces a _load... o algo asi... :P.

¿Sabeis algo?
  #2 (permalink)  
Antiguo 23/05/2010, 16:16
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Problema en enviar variables entre funciones

en tu primer codigo, fijate en la linea #15 estas explicitamente invocando la funcion cuando en realidad dicha funcion deberia ser un handler [handler = la funcion que invoca el evento] de dicho evento. tienes que asignar al evento una funcion anonima y dentro de esta invocas la funcion _load con el parametro necesario. en teoria, tu problema es que al explicitamente invocar la funcion _load, esta devuelve undefined y dicho valor es asignado al evento. por tanto, cuando tiene que ocurrir el evento lo que invoca es undefined. si tu funcion devolviera otra funcion, pues ya seria otro cuento pero no es tu caso.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: enviar, funciones, variables
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 11:09.