Analyser & récupérer les variables de l'url

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 550 fois - Téléchargée 18 fois

Contenu du snippet

Comme d'autres l'ont déjà fait, il faut analyser la chaine de l'URL pour les mettre dans un tableau afin de pouvoir ensuite utiliser les variables.
Contrairement à ce que d'autres ont fait, j'utilise un tableau associatif.
dans une url du type index.php?pseudo=pifou&id=25
le résultat sera un tableau GET['pseudo']='pifou' et GET['id']=25
j'appelle le tableau GET par analogie avec le $_GET en PHP uniquement.

Source / Exemple :


<script language="JavaScript" type="text/javascript">
<!--	 // récupérer TOUS les paramètres de l'URL
var tmp = window.location.search.substring(1).split("&");
var GET = [];
for (var i in tmp) 
	if (tmp[i].indexOf("=")!=-1)
		GET[decodeURI(tmp[i].substring(0, tmp[i].indexOf("=")))] = decodeURI(tmp[i].substring(tmp[i].indexOf("=")+1));
	else
		GET[decodeURI(tmp[i])]='';

// -->
</script>

Conclusion :


quelque explication:
substring(1) pour ôter le 1er caractère '?' de l'URL
split pour convertir en tableau chaque couple nom=valeur
une boucle sur ce tableau pour séparer chaque couple en GET['nom']=valeur

attention donc: pas de & ni = dans l'URL il faut les encoder / décoder.

A voir également

Ajouter un commentaire

Commentaires

Arto_8000
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
5 -
Sans prétentions ça ressemble plus qu'étrangement à un bout de code que j'avais déjà codé et posté sur des sources qui portent sur ce sujet sur ce site ... en fait c'est exactement là même chose écrit d'une façon différente.

Mon code :
a = unescape(window.location.search.substr(1)).split("&");
$_GET = new Array();
for (i=0;i<a.length;i++){$_GET[a[i].substring(0,a[i].indexOf("="))] = a[i].substr(a[i].indexOf("=")+1);}

La preuve :
http://www.javascriptfr.com/codes/EXTRAIRE-VALEURS-URL_36384.aspx

Tu ne l'as surement pas fait exprès, mais ça montre que ce genre de script est davantage un snippet qu'une source.
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26 -
en meme temps, on a tous lu ce genre de truc quelquepart, et tous ecrit ce genre de truc a plus ou moins les commentaires et les noms de variables pres... donc des similitudes c'est normal...
pifou25
Messages postés
150
Date d'inscription
lundi 13 octobre 2003
Statut
Membre
Dernière intervention
21 décembre 2014
-
Arto, j'ai cherché 3 min avant de poster et je crois que j'avais remarqué celui que tu m'indique, mais franchement j'étais pas allé jusqu'à lire les commentaires... je trouvais le mien mieux que celui existant (tu en conviendra) donc j'ai posté.
ton code a en + l'avantage d'utiliser unescape
par contre je pensais pas qu'on pouvait avoir un nom de variable qui commence par $ en js(?)
Tu peux le (re)poster dans les snippets je trouve que ça le mérite c'est toujours utile :)
Arto_8000
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
5 -
On peut comme on peut ne pas mettre de ";" à la fin de chaque ligne de code. C'est pas recommandé et pas vraiment standard. C'est davantage pour imiter le PHP que je l'avais fait ainsi.

Tu peux le poster si tu veux dans les snippets, j'ai plusieurs trucs sur lequel je travailles de ce temps ci et je risque d'oublier.
pifou25
Messages postés
150
Date d'inscription
lundi 13 octobre 2003
Statut
Membre
Dernière intervention
21 décembre 2014
-
déjà fait...
http://www.codyx.org/snippet_manipuler-parametres-passes-dans-url_93.aspx

c'est casse pied cette rubrique snippet, quand tu cherche un code JS dans le site JS il est dans snippet et je pense jamais à chercher.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.