Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RÉCUPÉRATION DES PARAMÈTRES PASSÉS EN PARAMÈTRES D'URL


Information sur la source

Catégorie :Trucs & Astuces Niveau : Débutant Date de création : 09/02/2005 Date de mise à jour : 09/02/2005 10:09:58 Vu : 6 501

Note :
6,33 / 10 - par 3 personnes
6,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

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

  • 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;
  • }
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;
	}

Historique

09 février 2005 10:09:59 :
Ajout de commentaires

Commentaires et avis

signaler à un administrateur
Commentaire de chimelpremier le 10/02/2005 14:03:51

Bravo pour  tes réponses avisées sur le forum.
Mais là,ça ne marche pas. Je n'ai pas compris, alors peux-tu faire un éxemple concret, merci


J'ai fait un fichier nommé var_url1.htm contenant :

<html>
<head>
</head>
<body >
<a href ="var_url.htm?a=1&b=2&c=3" >transfert de variables a=1, b=2 et c=3</a>
</body>
</html>

et un autre fichier var_url.htm :

<html>
<head>
<script type="text/javascript">
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;
  }

</script>
</head>
<body >
<a href="#" onclick="alert(getUrl("a"))">récup variables</a>

</body>
</html>

signaler à un administrateur
Commentaire de roro06 le 10/02/2005 14:37:33

Oui, la façon que tu as de l'appeler plante la fonction, je ne sais pas trop pourquoi ... surement à cause du href
Mais si tu mets:
<a href="javascript:alert(getUrl('a'))">récup variables</a>
ou <a onclick="alert(getUrl('a'))" ...
tu verras que ça marche.

Attention également aux guillemets en double, malvenus ici.

signaler à un administrateur
Commentaire de chimelpremier le 10/02/2005 15:41:54

Réponse rapide !. C'était l'erreur de débutant : guillemets en double.

href="#" provoque le rechargement de la page et dans ce cas les paramètres sont perdus, mais le onclick est éxécuté en premier et après correction de ma bévue, ça fonctionne aussi comme cela.

encore merci

signaler à un administrateur
Commentaire de narksh le 23/05/2006 10:47:26

J'ai une url email.php?a=1&b=2&c=3

Je veux afficher
si la variable a existe alors
je veux afficher
<input type='text' name='noclient' value='1'>
sinon
<input type='text' name='noclient' >

de meme pour b et c

Comment faire SVP

signaler à un administrateur
Commentaire de davidf007 le 28/10/2008 13:55:37 3/10


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.

signaler à un administrateur
Commentaire de davidf007 le 28/10/2008 14:23:01

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)

signaler à un administrateur
Commentaire de davidf007 le 28/10/2008 14:38:01

Et si vous le voulez vraiment pourquoi pas les expressions régulières pour splitter ...

signaler à un administrateur
Commentaire de roro06 le 29/10/2008 09:24:15

certes ...

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,733 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.