Paso de parametros en HTML con client-side Javascript

Valoración del artículo:
Se trata de un sencillo script Javascript para recoger los parámetros que le llegan a una página.
Publicado: 28/5/04
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
El script siguiente se colocará "a pelo" en la página que debe de recibir los parametros, o podrá copiarse en un fichero .js vinculado. En ambos casos el código no debe estar en ninguna función, para que se ejecute siempre que se carga la página. Una vez se haya ejecutado el script tendremos los valores recibidos en las correspondientes variables. Aquellas que no hayamos recibido tendrán el valor por defecto que hamos fijado.

El Código:
<script language="javascript">
//Autor: Bruno Suárez Laffargue
//Version: 1.1

//Definimos las variables necesarias
variable=unValorPorDefecto;//Habrá que establecerlo

//Capturamos la URL
var callingURL = document.URL;

//Separamos los parametros
var cgiString = callingURL.substring(callingURL.indexOf('?')+1,callingURL.length);

//Fijamos el sepador entre parametros
var DELIMETER = '&';

//Eliminamos la almohadilla, si es que existe... cortamos por lo sano!
if (cgiString.indexOf('#')!=-1){
    cgiString=cgiString.slice(0,cgiString.indexOf('#'));
}

//Troceamos el cgiString ya limpiado, separando cada par variable=valor
//en una de las posiciones del array
var arrayParams=cgiString.split(DELIMETER);

//Recorremos el array de parametros evaluando cada uno de los pares variable=valor
for (var i=0;i<arrayParams.length;i++){
    eval(arrayParams[i].substring(0,arrayParams[i].indexOf('=')+1)+"\""+
    arrayParams[i].substring(arrayParams[i].indexOf('=')+1,arrayParams
     [i].length)+"\"");
}
</script>


Una de las restricciones funcionales para que esto funcione es tener tantas variables javascript definidas como parametros se van a recibir, inicializadas a un valor por defecto. Además estas variables han de llamarse exactamente igual que los parametros, ya que si no, no funciona. En ningún caso.

Comentarios
Fueron enviados 8 comentarios al artículo
6 comentarios no revisados
2 comentarios revisados:
Por: Jesús Navarrete
21/10/04
Hola, He utilizado el script para una web html, pero probando en distintos navegadores, sólo funcionaba en el mozilla, y poniendo unas trazas he averiguado que la línea:

var callingURL = document.URL;

debería ser sustituida, por lo que he leido, URL no está en todos los navegadores, es mejor usar location, aunque al final he usado location.href, de la otra forma me daba problemas en los dos que he estado probando, así que quedaría:

var callingURL = document.location.href;

y funciona de maravilla en mozilla 1.7.3 y explorer 6.0.2800.1106.

Un saludo y felicidades al autor.
Por: Jesús Esteiner Alonso
19/7/05
Hola todos,

Estuve probando la verdad lo que comentaban y no me funciono, sin embargo pude lograrlo de la siguiente manera:

function ObtenerP(nParametro)
{
//Capturamos la URL
var callingURL = document.location.href;

//Separamos los parametros
var cgiString = callingURL.substring(callingURL.indexOf('?')+1,callingURL.length);

// Para manejar control ya que el arreglo empieza en cero restaremos 1 al parametro recibido
nParametro -=1;

// Dividimos mediante la función split los parámetros separados por ampersam
var col_array=cgiString.split("&");
var part_num=0;

// Ahora hacemos un recorrido del arreglo y buscamos el # de parametro solicitado!
while (part_num < col_array.length)
{ if ( part_num == nParametro )
return col_array[part_num];
else
part_num+=1;
}

// evaluar que devolver cuando no lo
// encuentra...
return 0;
}

La idea es tener separado tan solo por & ampersand o el caracter que escojan luego se llama por el # de parametro,

ObtenerP(1);

Regresará el valor de la primera instancia,

Saludos!

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo