Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Artículos > Lenguajes de script > Javascript > Paso de variables Javascript entre páginas (I)
-Artículos

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.

 

Últimos comentarios
Últimos 5 comentarios

kiero niñas de 15 (05/11/2009)

Por
me exitan las niñas de 13 a 16 años con tetas grandes y piernudas, ke tengan las nalgas bien paraditas y usen tangas ya me he cogido a varias pero kiero mas tengo el pene muy grande si kieres ke te folle y eres una tierna niña tetona escribeme a pene@gmail.com

sdf (26/08/2009)

Por
sdf

otravez harry potter ........... (21/08/2009)

Por
Esta fantastica serie de magia y aventura protagonizada por tres niños que se convierten en adolecentes esta llegando a su fin.Esta fantastica serie que esta llegando a su final a sido la mejor de las series de magia que han habido en la historia.
Aunque nuestra humanidad este viviendo una serie de cosas espantosascomo las catastrofes personas que enloquecen y otro rincon de personas que les guta tratar con fuerzas oscuras y magia esto no puede ser impedimento para que esta serie no se denomine como fantastica ya que la iglesia esta creando una granoposicion ya que pienzan que personas puedan crear magia oscura y poderosa que ponga en riesgo nuestra humanidad, aunque esto pude ser cierto poruqe la magia existe.........
no sera impedimento.Ya para acabar esta publicacion quiero felicitar a todos los que hicieron posible esta historio y a su escritora .....FELICITACIONES Y GRACIAS POR ESTE ESPACIO

otravez harry potter ........... (21/08/2009)

Por
Esta fantastica serie de magia y aventura protagonizada por tres niños que se convierten en adolecentes esta llegando a su fin.Esta fantastica serie que esta llegando a su final a sido la mejor de las series de magia que han habido en la historia.
Aunque nuestra humanidad este viviendo una serie de cosas espantosascomo las catastrofes personas que enloquecen y otro rincon de personas que les guta tratar con fuerzas oscuras y magia esto no puede ser impedimento para que esta serie no se denomine como fantastica ya que la iglesia esta creando una granoposicion ya que pienzan que personas puedan crear magia oscura y poderosa que ponga en riesgo nuestra humanidad, aunque esto pude ser cierto poruqe la magia existe.........
no sera impedimento.Ya para acabar esta publicacion quiero felicitar a todos los que hicieron posible esta historio y a su escritora .....FELICITACIONES Y GRACIAS POR ESTE ESPACIO

erer (09/07/2009)

Por
erer
 
Tienda
Patrocinados
 

Copyright © 1999-2010 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

diseño y desarrollo web por Color Vivo Internet. Un proyecto de los Hermanos Carrero