Comment obtenir les paramètres d'URL en JavaScript ?
Il est possible en JavaScript de récupérer les paramètres d'une URL. On se basera sur l'attribut window.location.search qui retourne la chaîne de caractères contenant ces paramètres.
Les paramètres d'URL sont des variables que l'on va utiliser pour transmettre au site web des informations que l'on va utiliser dans le traitement de la page. La liste des paramètres commence dans une URL avec le caractère ?. Les variables suivent ensuite la forme variable=valeur et sont séparées par le caractère &.
//Exemple d'url avec des paramètres http://www.exemple.com/recherche.php?nom=toto&age=15&ville=paris
Il est possible en JavaScript de récupérer les paramètres d'une URL. On se basera sur l'attribut window.location.search qui retourne la chaîne de caractères contenant les paramètres de l'URL. Une fois cette chaîne récupérée, il faudra obtenir la valeur de l'attribut en fonction de son nom. On sait que le nom est précédé du caractère ? ou &, qu'il est suivi du signe =, et que l'on trouve ensuite la valeur, suivie soit du signe &, annonçant une autre variable, soit de la fin de la chaîne.
Une fois la valeur récupérée, on remplace le caractère + par une espace (car les espaces sont transformées en signes + dans une URL) et on applique la méthode decodeURIComponent() sur la chaîne. Cette méthode remplace les caractères spéciaux encodés dans une URL par leur forme originale. C'est notamment le cas pour les caractères accentués.
function getParameterByName(name) { name = name.replace(/[[]/, [).replace(/[]]/, ]); var regexS = [?&] + name + =([^&#]*); var regex = new RegExp(regexS); var results = regex.exec(window.location.search); if(results == null) return ; else return decodeURIComponent(results[1].replace(/+/g, )); }
Si vous souhaitez plutôt utiliser une fonction qui transforme directement les paramètres de l'URL en tableau associatif, alors il faudra faire une boucle avec la méthode search() de la classe Regex. Cette méthode permet de chercher la prochaine occurrence d'une expression régulière.
function getParameters() { var urlParams, match, pl = /+/g, // Regex for replacing addition symbol with a space search = /([^&=]+)=?([^&]*)/g, decode = function (s) { return decodeURIComponent(s.replace(pl, )); }, query = window.location.search.substring(1); urlParams = {}; while (match = search.exec(query)) urlParams[decode(match[1])] = decode(match[2]); return urlParams; }