Categorías destacadas
programacion php    
Artículo
3
¡votar!

 Paso de variables Javascript entre páginas (I)

1 . El método
2 . La página origen
3 . La página destino

Muchos habéis preguntado por la manera de pasar variables Javascript entre distintas páginas. Hay más de un modo de hacerlo, y aqui explico el que me parece más sencillo. Aquí tenéis un ejemplo.

El método

Vamos a utilizar el mismo método que se usa para pasar variables a scripts CGI, PHP o ASP. Si os fijas en cualquier buscador, cuando realizáis una búsqueda, la barra de direcciones se os llena de un montón de caracteres un poco extraños, llenos de "?" y "+" por todos lados. Bueno, pues nosotros vamos a utilizar la misma técnica.

Codificaremos nuestras variables en la URL de la dirección destino. Es lo mismo que hace un formulario cuando utilizais el método GET. Podeis ver un ejemplo de cómo funciona.

Aunque, como veremos, es relativamente sencillo pasar estos valores de una página a otra, deberemos tener en cuenta que sólo podemos pasar variables que tengan valores, como puedans er números o cadenas, pero nunca referencias a objetos, como son los vectores.

La página origen

Para generar la dirección destino debemos saber cómo se codifican una lista de variables para introducirlas en una URL. Esto se hace poniendo un símbolo de interrogación (?) detrás del nombre del archivo al que se pasan las variables (que en nuestro caso será destino.html). Después de ese símbolo viene la lista de variables, separada por el símbolo ampersand (&). Cada elemento de dicha lista consiste en el nombre de la variable, el símbolo de igualdad (=) y el valor de la variable.

Sin embargo, y como en una URL podemos incluir muy pocos caracteres, algunos de los valores de las variables tendrán que estar codificados. Por ejemplo, no puede haber espacios en una dirección en formato URL. ¿Cómo incluimos entonces los espacios de nuestras variables tipo cadena? Sustituyendolos por %20, que es el equivalente al espacio dentro de la codificación URL. Así por ejemplo, si tenemos dos variables llamadas var1 y var2 cuyos valores son, respectivamente, 3 y "Hola, que tal", la URL resultante será:

destino.html?var1=3&var2=Hola%2C%20que%20tal

Gracias a Dios, Javascript ofrece una pareja de funciones que permiten codificar y descodificar una cadena a formato URL. Son escape y unescape. Por lo tanto, ya tenemos todo lo que nos hace falta para enviar variables. Para que sea más sencillo utilizaremos una función que, al ser llamada, realice el envío. Esta función se llamará pasarVariables y recibirá dos parámetros de tipo cadena. El primero contendrá el nombre de la página a la que deseamos ir y el segundo una lista separada por comas de las variables que deseamos enviar:

function pasarVariables(pagina, nombres) {
  pagina +="?";
  nomVec = nombres.split(",");
  for (i=0; i<nomVec.length; i++)
    pagina += nomVec[i] + "=" + escape(eval(nomVec[i]))+"&";
  pagina = pagina.substring(0,pagina.length-1);
  location.href=pagina;
}

El método funciona añadiendo a la variable pagina el texto necesario para pasar las variables y, finalmente, redirigirse a la dirección resultado de esos añadidos. Por eso, lo primero es añadir el símbolo de interrogación. Luego crea un vector con los nombres de las variables utilizando el método split. El bucle añade a cada iteración el nombre de la variable, el símbolo de igualdad, el valor de dicha variable codificado en URL y el ampersand. Por último, una vez terminado el bucle, se borra el último ampersand que ya nos sobra.

Por fin, para utilizar esta función, la llamaremos desde un enlace:

<a href="javascript:pasarVariables('destino.html', 'var1,var2')">Pulse
aqu&iacute;</a> 

La página destino

Una vez que sabemos enviar las variables, tendremos que escribir también un poco de código para recibirlas desde la página destino. Este es el código que colocaremos en la cabecera de la página, antes que el resto del código, para que podamos utilizar las variables cuanto antes:

cadVariables = location.search.substring(1,location.search.length);
arrVariables = cadVariables.split("&");
for (i=0; i<arrVariables.length; i++) {
  arrVariableActual = arrVariables[i].split("=");
  if (isNaN(parseFloat(arrVariableActual[1])))
    eval(arrVariableActual[0]+"='"+unescape(arrVariableActual[1])+"';");
  else
    eval(arrVariableActual[0]+"="+arrVariableActual[1]+";");
}

Lo que hacemos en la primera línea es eliminar la interrogación del texto que viene detrás del nombre de la página en la URL. Para lograrlo, escogemos una subcadena de location.search, que es la propiedad que contiene ese texto.

Luego, convertimos esa cadena en un vector que tiene una pareja "variable=valor" en cada uno de sus elementos. Entonces, recorremos cada elemento de dicho vector, creamos un vector temporal que contiene en su primer elemento el nombre de la variable y en el segundo el valor y, utilizando la función eval, creamos la variable asignandola a su valor.

Por último, indicar que dentro del bucle existe una condición que comprueba si la variable es o no numérica para, al hacer la asignación, decidir si encierra o no el valor entre comillas.

   
Publicado por:
Administrador
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
Anónimo dice:

sdf

26/08/2009, a las 16:24:46
Anónimo dice:

erer

09/07/2009, a las 14:11:30
Anónimo dice:

aadasd

21/02/2008, a las 02:18:22
Anónimo dice:

afsad

10/11/2006, a las 10:18:01
Anónimo dice:

No sería más sencillo lo siguiente? Fichero vae_E1.htm Pasar variables a otra página var X = "ABCD "; var Y = "EFGH "; var Z = "IJKL "; function N() {window.name= X + "" + Y + "" + Z;} Pasar variables

25/10/2006, a las 18:28:33
Anónimo dice:

he visto paginas de musica en la que haces click una cancion que esta en un cuadro de lista y esta se reproduce automaticamente (embed src="") dime como debo codificar para hacer lo mismo

03/10/2006, a las 01:16:09
Anónimo dice:

Hey si sabes como hackear un correo please ayudame a hackear uno mandame un mensaje please tomate cinco minutos y dime los precedimientos a este mi correo lokillo_xti18@hotmail.com no me lo hackees sui sabes XD jejeje

16/05/2006, a las 22:14:26
Anónimo dice:

Ojo ?? Como hago para devolver a una pagina que abri con : miVentana = open(parametros); mas de una variable, por ejemplo unos checkbox, como el correo de yahoo. Por que primero abro la ventana esta muerto (muy facil) y luego debo de regresar los valores a esta ventana, terminando la ejecucion de la funcion que invoco la ventana.

30/03/2006, a las 00:29:13
Anónimo dice:

Cuando se para los parametros a la funcion en el parameto nombres como se debe pasar la cadena con el nombre de la variable y su valor, porque en el bucle se asigna el mismo dato para el nombre de la variable y para su valor. Gracias por sacarme de la duda.

09/02/2006, a las 16:39:25
Anónimo dice:

como paso variables javascript a otra pagina

25/01/2006, a las 20:47:43
Anónimo dice:

como paso variables javascript a otra pagina

25/01/2006, a las 20:46:24
Anónimo dice:

me gustaria saber que hay que hacer para que pueda leer los correos electronicos, por que cada vez que le doy pa leerlos, me aparece que se requiere javascript. me gustaria que me lo explicaran, pero no me mandeis ningun correo por que no los puedo leer. gracias

04/01/2006, a las 01:57:42
Anónimo dice:

sa

15/09/2005, a las 01:34:17
Anónimo dice:

wwww

15/09/2005, a las 01:32:52
Anónimo dice:

quisiera pudieran informarme cuales la razon que no pueda leer mis correso en hotmail Me dice que debo instalar JavaScript, para poder hacerlo. Creo que en ningun momento msn , informo que seria necesario este programa, y ahora estan imponiendo la utilizacion de JavaScript, o no pueden leerse los correos. Agradeceria, tuvieran la gentiliza de detallar las causas de este imposicion, y si no es asi, solucionen el inconveniente, o informen a los socios de hotmail, del problema. Espero respuesta lo antes posible, ya que por medio de hotmail, es que recibo datos, para mi trabajo, y nuevas contrataciones, tanto yo como familiares. Los mismo sucede con gmail.

29/08/2005, a las 12:56:10
Anónimo dice:

12/07/2005, a las 11:00:54
Anónimo dice:

lo siento, pero me desabilitaron el codigo html en este articulo, el que quiera saber como se hace esto fácilmente que se comunique conmigo al coreo.- salu2.-

11/07/2005, a las 16:56:15
Anónimo dice:

me parece muy bueno el artículo, pero creo que hay q hacer las cosas lo mas facil posible. aqui tengo una manera de pasar variables JavaScript (de a una variable eso si) mucho mas facil: Pagina madre (Index): Ver Galería de Imágenes Página hija (pop up): aux2 = window.opener.visita document.write (aux2) * "AbrirVentana()" es la función que abre un pop up * "visita" es la variable global declarada en el head de la página principal, a la cual se le asigna un valor en el onClick del href * Tambien se puede hacer con un boton dentro de un form, se reemplaza el href por el boton y en el onClick de este se coloca la variable y su valor.- espero que les sirva.- salu2

11/07/2005, a las 16:53:59
Anónimo dice:

Estoy desarrollando un juego utilizando SVG, el cual requiere de JavaScript para poder hacer validas algunas funciones. El caso es que pretendo poner un applet en Java en la misma pagina que funcione como dado y deseo que el JavaScript tome el valor del dado para que se pueda aplicar en una animacion SVG. Lo del SVG no es problema, pero solamente queria saber como importar el valor del applet. Saludos

28/06/2005, a las 04:27:38
Anónimo dice:

mi compu no me permite ver mi correo electrònico, en hotmail porque me pide java script.

27/06/2005, a las 23:39:11
Anónimo dice:

De antemano quiero agradecer la colaboración de cualquiera que me pueda ayudar, trataré de ser lo más clara posible. Lo que pasa es lo siguiente: tengo un pull down que toma los valores de una consulta en una base de datos y los muestra, hasta ahi todo va bien PERO, uno de los valores requiere que sea mostrado otro pull down que también toma valores de una consulta en la misma base de datos, lo que necesito hacer es que al momento de seleccionar el valor en el primer pull down aparezca el adicional, y si decido cambiar el primer valor el pull down adicional debe desaparecer, alguien sabe como puedo hacer esto?

02/04/2005, a las 18:20:54
Anónimo dice:

En la pagina destino como se usa la variable, me explico, la variable enviada es $var, usando en PHP, o es otra??

31/03/2005, a las 20:41:58
Anónimo dice:

Tengo tres páginas, en la primera pido unos datos. En la segunda dependiendo de lo introducido en la primera pido datos o envio a la tercera. El problema es que, como quiero que sea restringida la 3ª pag, compruebo unas variable que paso mediante POST que se dan valor en un formulario de la segunda pagina. En el caso de que no se tenga que realizar el formulario tengo que pasar de la segunda a la tercera unas variables PHP que leo como POST en la tercera, pero sin dar ningun boton, ni pulsar ningun link... Es posible??

16/03/2005, a las 13:50:22
Anónimo dice:

a

03/02/2005, a las 22:29:34
Anónimo dice:

jjjjjjjjjjjjjj

12/11/2004, a las 14:04:36
Anónimo dice:

sad

03/11/2004, a las 22:18:43
Anónimo dice:

contrate AOL y no puedo chatear, por que se me informo que en mi compu falta el archivo JAVA para esa funcion, y no se como instalarlo, en realidad de computadoras solo se prenderla y apagarle y navegar un poco miguel

03/05/2004, a las 22:50:28
Anónimo dice:

prueba

15/04/2004, a las 17:00:52
Anónimo dice:

este le codigo q tengo: "" and request.Form("contra") "" then set conexion1=Server.CreateObject("ADODB.Connection") conexion1.Open "tablin" set recorset1=conexion1.Execute("select * from usuarios") con_escrito=Request.Form("contra") nom_escrito=Request.Form("nom") do while recorset1.Eof=false if nom_escrito=recorset1("nombre") and con_escrito=recorset1("contrasena") then nom_regi=recorset1("id")%> var nombre= alert(nombre) //entrar(nombre) el valor q recojo es una campo de la base de datos de tipo texto y me da error y si utilizo un campo de tipo numerico no me da error

12/04/2004, a las 18:29:28
Anónimo dice:

sfsdfsfsfs

25/02/2004, a las 17:56:31
Anónimo dice:

No se exista alguna forma de enviar todo el document.form.misdatos a una nueva ventana creada con window.open. Si pudieran ayudarme le estare muy agradecidos. Favor de enviarmelo por correo.

04/02/2004, a las 18:24:31
Anónimo dice:

Buenas Tardes: La vedad que esta pequeña pero Gran explicacion me sivio un montonazo. Ahora tengo un problema, Las variables las quiero pasar atravez de un FROM method POST y que me las muestra en otro HTML, Teniendo Texto sin los caracteres +

11/01/2004, a las 23:53:04
Anónimo dice:

hola Tengo este problema: Tengo una funcion en javascript que funciona bien, me despliega un aviso "onclick" e imprime el valor de unas variables. Pero tambien quiero usar esas variables en un scrip en php dentro de la misma página. Si me ayudan se los agradeceré muchisimo

15/12/2003, a las 20:57:29
Anónimo dice:

Si quieres pasar una variable ASP a otra en javascript puedes hacerlo de la siguiente forma. Es necesario que el script esté en la misma página que el código ASP a traves del cual recoges los valores: var numJavascript = Espero que te haya servido de ayuda, si tienes cualquier problema, escríbeme y trataré de responderte lo antes posible. Un saludo.

05/12/2003, a las 14:15:24
Anónimo dice:

alguien me podria ayudar, tengo un monton de archivos .ppt los cuales debo mostrar desde una asp oprimiendo un boton el problema es que el value del boton es la parte final de los nombres de cada archivo p ejemplo: diapositiva_0003.ppt mi boton solo puede obtener el valor 0003 desde una BD como puedo hacer una busqueda o un direccionamiento para cada archivo ayudenme por favor saludos ..... horfael80hotmail.com para cualquier sugerencia

29/11/2003, a las 00:05:21
Anónimo dice:

Hola, mi problema es el siguiente: NO SE JAVASCRIPT y necesito asignar un valor de un parámetro de la url a una variable JavaScript La url es del tipo: http://www.federico.com?num=1&id=pepe Con ASP es muy fácil, pero necesito que en un script de JavaScript las variables identficador y numero sean asignadas através de la url Por ejemplo, en ASP hago lo siguiente: identificador = Request.QueryString("id") numero = Request.QueryString("numero") ¿Puedo asignarle estos valores desde ASP a JavaScript de alguna manera si tengo el Script en la misma página? Os agradezco de antemano vuestro tiempo. Un besazo a tod@s. MUA!!

17/09/2003, a las 18:54:32
Anónimo dice:

Necesito pasar una variable que se genera en el Script y luego usarla en una rutina del ASP que esta en el mismo archivo

31/07/2003, a las 17:44:14
Anónimo dice:

Hola, en primr lugar gracias por responder otra duda que tenia para la web de mi cole. Ahora tengo un problema: Tenia una pagina con un formulario, con una serie de que al hacer clic en submit me mandaba un email con los datos del formulario, definidos en la variable EmailVar, pero me lo mandaba con el nombre de las variables: nombre: el nombre, apellido: el apellido... y yo lo queria que me lo mandara: el nombre, el apellido... Entonces he hecho una pagina en php que recoje las variables y las traduce así, a seguido, como yo quiero, y eso es una variable de php que se llama $texto = $nombre.$apellido... y lo manda a una pagina que tiene el formulario con el boton submit y la variable EmailVar. Quiero que esa EmailVar coga como valor la variable $texto, para que me lo mande seguido. ¿Como lo hago?. Por favor mandadme un email porque esto no lo leo muy a menudo. Muchisimas gracias.

10/07/2003, a las 05:32:06
Anónimo dice:

El metodo Get es el inseguro pues muestra los contenidos en la URL. Post es el seguro. Asi y todo no recomiendo pasasr parametros por la url por que es muy facil de capturarlos. Disculpen por el "errorcito"

09/07/2003, a las 19:29:17
Anónimo dice:

no es un poco inseguro mandar parametros por la URL???. Se sipune que un sitio web debe ser seguro, pero acuerdense de que el metodo post es super inseguro pues se podria describir lo que pasa por la url. Ojo con eso.

09/07/2003, a las 19:27:26
Anónimo dice:

Estimado David, He usado tu script y funciona a las mil maravilla. ¡Enhorabuena! El caso es que lo estoy probando conjuntamente con el envío de un formulario y éste no se puede mandar. La sentencia Javascript que pasa las variables a través de la URL (javascript:pasarVariables('destino.html',%20'var1,var2,etc.') lo impide. ¿Tienes una idea de cómo solucionarlo? Gracias y un saludo, José A.

04/07/2003, a las 21:51:59
Anónimo dice:

Tengo una pagina con dos frames. En el superior, tengo un formulario con dos cajas de texto y una imagen (img) que hace de boton. Al pulsar la imagen quiero actualizar el frame inferior, que contiene un informe rpt, con los datos que he introducido en las cajas de texto del frame superior. Para ello necesito pasar los parametros (el contenido de las cajas) de un frame a otro. ¿Cómo?

06/06/2003, a las 20:51:36
Anónimo dice:

Hola amigos, leyendo por ahi vi un comentario que decia como pasar variables a otras paginas o como hacer una pagina obtenga datos sin refrescar, bueno yo tuve el mismo problema hace un tiempo y encontre una posible solucion al problema de conciliar un lenguaje servidor "ASP" , de uno cliente "javascript" (aunque existe el javascript de lado servidor), esto se conoce como "REMOTE SCRIPTING" O "SECUENCIA DE COMANDOS REMOTOS", la verdad existe informacion pero en ingles , es algo complicado, pero soluciona mucho el problema del dinamismo y comunicacion entre JAVASCRIPT y ASP.....busquen en google, colocando REMOTE SCRIPTING, ya que no me acurdo de los links

06/06/2003, a las 01:41:54
Anónimo dice:

Buenas tardes, necesito saber como pasar una variable que tengo en Java script a PHP, ejempo var variable = "cesar"; La idea seria que el código php imprimiera cesar, gracias por su ayuda

15/05/2003, a las 07:34:23
Anónimo dice:

hola|||

02/04/2003, a las 05:27:48
Anónimo dice:

hfjghjhgjg

24/03/2003, a las 19:41:30
Anónimo dice:

Quisiera saber como puedo pasar el valor de una variable de javascript, obtenida a través de un evento, a otra variable de ASP. Muchas gracias.

12/03/2003, a las 12:50:19
Anónimo dice:

Tengo una pagina formada por frame y me gustaría saber como puedo mandar el valor de una variable a dos paginas distintas sin producir ningun evento. Gracias

20/11/2002, a las 17:59:44
Anónimo dice:

tengo un problema nesecito pasar el valor de una variable obtenida de un evento javascript a una variable en php $varphp=varjavascript el evento java es el siguiente y funciona ahora deseo pasar este valor a una variable en php ." 

BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon