Récupération des paramètres passés en paramètres d'url

0/5 (8 avis)

Snippet vu 10 515 fois - Téléchargée 39 fois

Contenu du snippet

Un petit bout de script pour récupérer les variables passées en paramètres, donc.
Si l'URL est du genre "http://www.monsite.com?a=1&b=2&c=3", Cela permet de récupérer directement ces valeurs par :
getUrl("a"), getUrl("b") etc ...

Source / Exemple :


function getURLvar()
	{
                // Fonction qui retourne un tableau associatif avec toutes les variables
                // Utilisée par getUrl()
	var url=location.href; // données de la barre d'adresse
	var urlVars=url.split("?"); // tableau contenant d'un coté l'url proprement dite, de l'autre les variables, s'il yen a (auquel cas, urlVars.length>0 : voir plus bas)
	var v=new Array(); //
	v["name"]=new Array();
	v["val"]=new Array();
	
	if (urlVars.length>0)
		{
		var vars=urlVars[1].split("&"); // séparation de toutes les variables
		
		for (var i=0; i<vars.length; i++)
			{
			v["name"][i]=vars[i].split("=")[0];
			v["val"][i]=vars[i].split("=")[1];
			//alert(v["name"][i] + "=" + v["val"][i]);
			}
		}
	return(v);
	}

function getUrl(alpha)
	{
	var v=getURLvar();
	var cRet;
	for (var i=0; i<v["name"].length; i++)
		{
		if (v["name"][i]==alpha)
			{
			cRet=v["val"][i];
			}
		}
	return cRet;
	}

A voir également

Ajouter un commentaire Commentaires
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
29 oct. 2008 à 09:24
certes ...
davidf007 Messages postés 3 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 28 octobre 2008
28 oct. 2008 à 14:38
Et si vous le voulez vraiment pourquoi pas les expressions régulières pour splitter ...
davidf007 Messages postés 3 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 28 octobre 2008
28 oct. 2008 à 14:23
function getParamURL (url,param)
{
// Exemple bidon _
//
// index 0 1 2 3 4 5 6 7 8 9 10 11 12
// url[index] A B C ? x = 3 & y a = 2 7

// getParamURL (url,x) (url,ya)
// posParams 3 3
// debParam 4 8
// debParam+= 6 11
// finParam 7 -1
// substring (6,7)
// substr (11,2)
// retourne "3" "27"

var posParams = url.indexOf ('?', 0);
if (posParams < 0) return null;

var debParam = url.indexOf (param+'=', posParams+1);
if (debParam < 0) return null;

debParam += param.length()+1;

var finParam = url.indexOf ('&', debParam);
if (finParam < 0) return url.substr (debParam, url.length()-debParam);
else return url.substring (debParam, finParam);
}

// à tester (pas encore fait)
davidf007 Messages postés 3 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 28 octobre 2008
28 oct. 2008 à 13:55
Ce code est tout sauf optimal ...

Il découpe l'ensemble de la chaîne et y stocke dans un tableau (affectations mémoire)
Il parcours le tableau pour y trouver le paramètre ... complexité O(n) ridicule !

Si au moins le découpage était stocké (je ne connais pas trop les capacités du javascript)
sous la forme d'une table de hachage ou autre structure à temps de parcours par clé en O(log(n)) ou en O(1).

Pourquoi ne pas simplement :

Chercher la position du caractère ? dans l'URL

Si non trouvé -> retourner null

Si trouvé ... chercher depuis la position du ? et faire une rechercher de chaîne pour y trouver "alpha=" et en retirer une sous-chaîne depuis la position après le = et jusqu'au prochain & (ou jusqu'à la fin de la chaîne si aucun &...).

D'ailleurs je vais le faire tout prochainement dans le cadre d'un projet ...

Sans rancune.
narksh Messages postés 2 Date d'inscription dimanche 18 janvier 2004 Statut Membre Dernière intervention 23 mai 2006
23 mai 2006 à 10:47
J'ai une url email.php?a=1&b=2&c=3

Je veux afficher
si la variable a existe alors
je veux afficher

sinon


de meme pour b et c

Comment faire SVP

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.