begin process at 2010 03 21 23:41:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 920

Auteur : roro06

Ecrire un message privé
Site perso
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

 Sources du même auteur

VÉRIFICATION DE VALIDITÉ D'UN RIB
Source avec Zip CODEUR-DÉCODEUR MORSE

 Sources de la même categorie

HTML_ENTITIES_DECODE par zen69
ACCÈS À LA MÉTHODE SETATTRIBUTE('STYLE','') SOUS IE6 par masternico
OUTIL DE SÉLECTION par jdmcreator
Source avec Zip SIMPLIFIER LA CREATION DYNAMIQUE D'ELEMENT HTML par kazma
DÉTECTER SI CSS EST ACTIVÉ par jdmcreator

Commentaires et avis

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>

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.

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

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

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.

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)

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 ...

Commentaire de roro06 le 29/10/2008 09:24:15

certes ...

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales