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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 128 fois - Téléchargée 37 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
-
certes ...
davidf007
Messages postés
3
Date d'inscription
mardi 18 novembre 2003
Statut
Membre
Dernière intervention
28 octobre 2008
-
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
-
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
-
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
-
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.