Ir al contenido principal

Leer parámetros desde la URL en JavaScript

Normalmente se suelen mandar parámetros desde un formulario en HTML / XHTML a un script escrito en un lenguaje de lado de servidor (JSP, PHP, ASP, ...), pero en alguna ocasión tendremos que llamar a un HTML / XHTML pasándole parámetros por URL (es decir, los parámetros son enviados usando el método GET).

En JavaScript podemos recurrir al objeto del navegador location y a su método search. Si una URL con parámetros tiene la forma:

http://elbitcampeador.wordpress.com?parametro1=valor1&parametro2=valor2

Para esta URL, el método location.search devuelve la cadena:

?parametro1=valor1&parametro2=valor2

Donde cada parámetro está separado por el caracter &, y para cada párametro se usa el carácter = para separar el nombre del valor.

A continuación pongo un ejemplo completo de lectura de parámetros desde URL usando JavaScript, y usar dos parámetros en concreto (uno llamado ancho y otro alto) para hacer un recuadro con esas dimensiones.

index.html

[sourcecode language="html"]


Leer parámetros desde JavaScript
<script type="text/javascript" src="script.js"></script>


La URL es:
El valor del parámetro ANCHO es:
El valor del parámetro ALTO es:


[/sourcecode]

script.js

[sourcecode language="javascript"]
function Init(){
var url = String(window.location.href);
var params = String(window.location.search);
var aux1 = new Array();
var aux2 = new Array();
var cont = 0;
var tot = 0;

//si hay parametros
if (params.length > 0){
//eliminamos el primer caracter '?'
params = params.substr(1);

//insertamos en un array las parejas nombre=valor
aux1 = params.split("&");
tot = aux1.length;
for (cont = 0; cont < tot; cont++){
//separo el nombre del valor
aux2 = aux1[cont].split("=");

//trabajo con cada parámetro
if (aux2[0].toLowerCase() == "ancho"){
document.getElementById("ancho").innerHTML = aux2[1];
document.getElementById("cuadro").style.width = aux2[1];
}
else if (aux2[0].toLowerCase() == "alto"){
document.getElementById("alto").innerHTML = aux2[1];
document.getElementById("cuadro").style.height = aux2[1];
}

}

}
else{
alert("No hay parámetros en la URL");
}

document.getElementById("url").innerHTML = url;
}
[/sourcecode]

Comentarios

  1. Despues de muchas pruebas no consegui que funcionara con javascript, lo he hecho al final con php que es muchisimo mas facil por lo que he visto. Solo con añadir donde queramos de nuestro codigo sale andando sin mayores problems!!

    ResponderEliminar
  2. Esta bien esto...

    lo que se come despues de añadir es php echo $_GET['ancho'];
    con sus correspondientes <? y al contrario al final obviamente.

    ResponderEliminar
  3. A mi tampoco me funcionaba pero reemplacé el
    por y anduvo perfecto.
    Después de usar ASP/JavaScript/MySQL ahora me siento perdida sin mi Request.QueryString !!! Gracias por el código !

    ResponderEliminar
  4. Lo siento, no salio el texto completo ... lo que reemplacé es el BODY por BODY ONLOAD="Init();"

    ResponderEliminar
  5. Gracias, funcionó perfectamente

    ResponderEliminar
  6. ¡Funciona! ¡Gracias.!
    Justo lo que necesitaba para no tener que utilizar PHP para evaluar los parametros recibidos.
    Obs.
    "index.js" != "script.js"

    ResponderEliminar
  7. ¡Gracias por la observación! ... ya está corregido :)

    ResponderEliminar
  8. capo!!! funciona a la perfeccion GRACIAS!!!

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Cosmic Supremacy : Juego 4X online, gratuito y multijugador basado en conquistas espaciales

  Llevaba bastante tiempo buscando un juego de estrategia en el espacio, multijugador , y que fuera por turnos . Un requisito que siempre tuve es que fuera fácil aprenderlo, y tuviera suficiente ayuda o tutoriales. Creo que lo he encontrado, se llama Cosmic Supremacy , y es gratis . Os dejo aquí información traducida desde su web oficial por si os animáis :) ¿Qué es Cosmic Supremacy? Cosmic Supremacy es un juego gratuito de estrategia espacial multijugador masivo basado en ticks/turnos con una interfaz 3D 'Galaxy View'. Compartes una galaxia con cientos de jugadores, cada uno con su propia civilización alienígena. Algunos de ellos pueden llegar a ser tus enemigos, otros podrían ser tus aliados. Necesitas explorar la galaxia que te rodea, descubrir nuevos sistemas solares, colonizar nuevos planetas y expandir tu imperio. Puedes diseñar todas las naves de tu flota e investigar nuevas tecnologías avanzadas para poder construir naves más rápidas y fuertes que te darán la ventaja ...

Hacer una pausa en un fichero por lotes batch (bat o cmd)

En consola de Windows (antiguamente Ms-Dos) desde siempre se ha podido hacer una pausa, esperando confirmación del usuario. El comando en cuestión es: pause Si escribimos pause en nuestra consola veremos que la consola se queda pausada hasta que pulsamos una tecla. Esto es útil en ficheros batch (ya sean .bat o .cmd) para hacer pausas controladas entre distintos comandos, a la espera que el usuario pulse alguna tecla para continua. Pero, ¿qué ocurre si queremos una pausa de cierto número de segundos y luego continúe el proceso automáticamente ? No hay ningún comando que lo haga, pero haciendo el siguiente "truco" (hace un ping a una URL especificando el número de segundos como timeout) lo podremos conseguir ping -n 10 localhost > null Simplemente cambiar el 10 por el número de segundos que queráis, y ya tendréis en consola (o msdos) una pausa de N segundos, y luego el proceso continuará automáticamente.  

jQuery Cycle Plugin - Transiciones animadas de imágenes (slideshow)

jQuery Cycle plugin proporciona un mecanismo de hacer transiciones animadas de imágenes . Su implementación está basada en el InnerFade Plugin de Torsten Baldes, el Slideshow Plugin de Matt Oakes, y el jqShuffle Plugin de Benjamin Sterling. El plugin soporta pausas al pasar el ratón por encima de la imágen, paradas automáticas, retrollamadas (callbacks) antes y después, disparadores (triggers) y una gran cantidad de efectos para las trasiciones. La última versión estable (2.34), publicada en esta misma semana, requiere, como mínimo, la versión 1.2.3 de jQuery . Es un plugin muy ligero, tan solo ocupa 18 KB en su versión para entornos de producción. Como casi todo en jQuery , es muy fácil de usar. Aquí pongo un breve ejemplo básico: HTML: [sourcecode language="html"] [/sourcecode] CSS: [sourcecode language="css"] .pics { height: 232px; width: 232px; padding: 0; margin: 0; } .pics img { padding: 15px; border: 1px solid #ccc; ...