En la comunicación entre distintas páginas web, se suele utilizar dos métodos para el pase de los parámetros que hacen que tenga sentido la navegación entre ambas. Estos métodos son GET y POST, además del resto menos utilizados como DELETE, PUT, OPTIONS o PATCH. Por ello, será de utilidad poder recuperar los parámetros pasados por GET de una manera sencilla.
En el método GET, los parámetros van concatenados en la URL de la página, después del caracter de la interrogación (?) y separados por un ampersand (&) entre sí. Por otro lado, en la petición POST, estos parámetros no son visibles a primera vista por lo que habrá que usar algún panel de desarrollo de los que incluyen los navegadores para poder verlo.
Dada esta característica de los parámetros pasados por GET, se puede obtener el valor de estos simplemente parseando la URL de la página con JavaScript, sin necesidad de usar ningún framework como JQuery para ello. Lo más práctico es definir una función en JavaScript de manera que se pueda usar desde cualquier parte y que ésta reciba como parámetro el nombre parámetro GET que se quiera recuperar.
Función para capturar los parámetros pasados por GET
Un ejemplo de función que se encargue de esto, podría ser el siguiente, la cual recupera los valores mediante expresiones regulares.
function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\
amp;"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); }
Ejemplo de uso de la función
A continuación, varios ejemplos de usos para ilustrar su comportamiento.
// query string: ?foo=lorem&bar=&baz var foo = getParameterByName('foo'); // "lorem" var bar = getParameterByName('bar'); // "" (presente, con valor vacío) var baz = getParameterByName('baz'); // "" (presente, sin valor) var qux = getParameterByName('qux'); // null (ausente)
Hay que destacar que si un mismo parámetro aparece varias veces (?foo=lorem&foo=ipsum), se devolverá la primera ocurrencia del mismo (lorem). No hay ningún estándar que diga que un parámetro no se puede repetir, por lo que hay que considerar que esto puede ocurrir.