Ver Mensaje Individual
  #1  
Antiguo 23-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Ejecutar función de JavaScript a partir del nombre de su identificador (string)

Hola,

Estoy tratando de organizarme mejor cuando utilizo el objeto "XmlHttpRequest". Resulta que quisiera "abstraer" la petición HTTP de lo que ha de hacerse con el resultado de esta. Así me gustaría contar con una función (o una clase, pero, esto ya se verá más adelante) que se encargara sólo de realizar la petición HTTP mediante el objeto mencionado.

A la función (o método de la clase) le pasaría varios parámetros, conviene a saber: el método de la petición HTTP, la URL a la que enviar le petición, los pares de variables/valor correspondientes, y... y aquí está la madre del cordero, el nombre de una función que hiciera a modo de "callback" y a la que la función encargada de la petición HTTP llamaría a su vez cuando esta se completara, por ejemplo.

Ya he hecho varias pruebas al respecto, y, lo primero que me pregunté es cómo podía ejecutar una función en JavaScritp a partir del nombre de su identificador disponible en una variable de tipo string, claro. Esto me consta que puede hacerse, pero, lo vi vaya usted saber dónde y además buscando por Internet no he conseguido nada que me sacara del apuro...

El caso es que he llegado a poder ejecutar la función de este modo:

Código:
function PeticionHttp('get', 'http://url', 'variable=valor', 'FuncionCallBack')
{
  // Omitimos el resto del código
  
  eval(FuncionCallBack +'()'+);

  // Omitimos el resto del código
}
Es decir, he conseguido ejecutar la función utilizando a su vez la función "eval" de JavaScript, peeeeeeeeeeeero...

A dicha función "CallBack" tengo que pasarle unos parámetros... un par de ellos, y, aunque esto es posible usando "eval" para ejecutar la función, lo cierto es que uno de ellos me causaba problemas, porque se trata de no poco código HTML lo que contiene, y eso son muchas comillas dobles, simples, barras invertidas, sin invertir...

Errores, en definitiva, relativos a que el parámetro no llegaba en condiciones de ser utilizado. ¡Pero amigo! Como estaba acercándome al objetivo me dije, hombre, David, ya que pasas un parámetro pásalo bien... ¿porqué no pasas la instancia del objeto "XmlHttpRequest" y a partir de ahí le sacas el jugo que necesites desde la función "CallBack" correspondiente?

Ajá. Mi gozo en un pozo. No he conseguido pasar el objeto susomentado a la función "CallBack". ¡Y el caso es que llega "algo" del mismo, incluso da la impresión de que ahí está, porque lo que un "alert" reza sobre el parámetro de la función "CallBack" es el tipo del objeto que estamos pasando como parámetro! Pero ninguna de sus propiedades parece estar disponible, todas están "undefined".

Y digo yo si no habrá otra forma de ejecutar una función como lo preciso usando otra cosa que no sea la función "eval" de JavaScript. O si alguno de vosotros se ha topado con algún problema similar a este y recuerda algo que pueda echarme una mano. No corre ninguna prisa, por cierto.

Bueno. Si necesitáis más información no dudéis en hacérmelo saber. Gracias a todos de antemano y que paséis un buen día.

Para Román: me parece que alguna vez tratamos sobre el objeto "XmlHttpRequest" en el Foro de moderadores y tú preparaste cierto código que, desafortunadamente no he podido encontrar (y es raro, porque suelo guardar este tipo de información). Creo recordar incluso que algo tenía que ver con lo que quiero hacer, en cuanto a que usabas en el mismo alguna función a modo de "CallBack"). Por favor, Román, si lo encuentras por ahí y crees que tiene que ver sé tan amable de copiarlo por aquí. ¡Gracias!

Posdatas: No sé si en JavaScript se podrán pasar parámetros por referencia. Por otro lado viendo que era posible que tuviera algo que ver que la función que hace la petición HTTP declarara como local la variable que contiene la instancia del objeto "XmlHttpRequest", traté de declarar esa variable como global, pero, ni por esas, la cosa no terminaba bien tampoco.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 23-08-2006 a las 14:05:16.
Responder Con Cita