Designed by Maunakea !
205 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter





   

JavaScript : fonctions getQueryString

3 fonctions pour le traitement des paramètres URL





Derf
Quand on développe en ASP ou en PHP, il est fréquent d'utiliser les URL pour passer des paramètres et conserver ainsi des valeurs d'une page à une autre. Ces langages possèdent les outils nécessaires à la gestion de ces paramètres. Mais en JavaScript aucune fonction toute faite ! Alors, comment faire une page statique et gérer tout de même ces paramètres d'URL ? Démonstration...

Tester la démo-Télécharger le source



Je vous propose donc ici 3 fonctions du type Request.QueryString().
Deux renvoyant la valeur d'un paramètre soit en fournissant son nom soit en fournissant sa position et une revoyant le nom du paramètre par sa position.
Vous allez voir, c'est simple.



Petite analyse du script

On commence par extraire la requête de la chaîne URL et pour cela on utilise la propriété search de l'objet Location. En introduction je disais qu'aucune fonction toute faite n'existait pour gérer les paramètres d'URL en JS ( mauvaise langue va ! ) et bien ce n'est pas tout à fait vrai, car la propriété search récupère toute la requête faisant partie de la chaîne URL (y compris le ? d'où l'utilisation de la méthode substr()).

Ensuite on extrait les paires (propriété=valeur) à l'aide de la de la méthode split() (utiliser l'esperluette '&' comme séparateur).

Reste à séparer chaque nom de propriétés de chaque valeurs ( utilisation des méthodes substring() et indexOf() ) que nous stockons respectivement dans 2 tableaux ( Array : aPrm et aVal ). Un pour les noms et un pour les valeurs.

Ah, j'allais oublier l'utilisation du constructeur Object() (création d'objet vide) que nous utilisons ici pour stocker les valeurs de paramètres sous la forme de propriétés de cet objet (les propriétés sont les noms de paramètre).

Pour finir, passons à la construction des fonctions :
- Pour la première, getQueryStringByName() ( renvoie la valeur du paramètre d'URL identifié par son nom ), nous utilisons les propriétés de l'objet vide ( objQS ). Pour cela on utilise un argument de fonction ( pnom ) et à l'appel de la fonction, on passe à l'argument le nom de la propriété ( nom du paramètre d'URL ) pour laquelle on souhaite obtenir la valeur.
- getQueryStringByPos() ( renvoie la valeur du paramètre d'URL identifiée par sa position ). On passe à l'argument ( ppos ) de cette fonction la position du paramètre d'URL, et sa valeur nous est retournée par le tableau aVal[].
- getParamNameByPos() ( renvoie le nom du paramètre d'URL identifiée par sa position ). On passe à l'argument ( ppos ) de cette fonction la position du paramètre d'URL, et son nom nous est retourné par le tableau aPrm[].


Mode d'emploi

1 - Inclure le script dans votre page :

<head>
  ...
  <script language="JavaScript" type="text/javascript"
        src="querystring_fonc.js">
   </script>
  ...
</head>



2 - Appel des fonctions :
Exemple avec getQueryStringByName() sur un bouton de formulaire.

<body>
  ...
  <form name="leform">
    Nom du paramètre :
    <input type="text" name="zone" />
    <input type="button" value="getQueryStringByName( )"
        onclick="alert(getQueryStringByName
        (document.leform.zone.value));"
/>
  </form>
  ...
</body>



Le Script



// **********************************
// * Nom du script : querystring_fonc v1.0
// * Auteur: Frédéric REMISE (Derf)
// * Date de création: 23/01/2003
// * Email :
// **********************************

// Récupération de la requête contenue dans l'URL (sans le ?)
var req = window.location.search.substr(1,window.location.search.length);

// Récupération des paires paramètre=valeur
var dbl = req.split('&');

var aPrm = new Array();    // Pour stock. le nom des paramètres
var aVal = new Array();    // Pour stock. la valeur des paramètres
var objQS = new Object();  // Objet pour stock. le nom des paramètres

for (i=0;i < dbl.length;i++) {
  // Recup. le nom des parametres (Attention : elem.1 du tab. = param.1)
  aPrm[i+1] = dbl[i].substring(0,dbl[i].indexOf('='));
  
  // Recup. la valeur des parametres (Attention : elem.1 du tab. = val.param.1)
  aVal[i+1] = unescape(dbl[i].substring(dbl[i].indexOf('=')+1,dbl[i].length));
  
  // Stock la valeur des paramètres sous forme de propriété
  objQS[aPrm[i+1]] = aVal[i+1];
}

// Renvoie la valeur d'un parametre par son nom
function getQueryStringByName(pname)
{
  return eval("objQS." + pname);
}

// Renvoie la valeur d'un paramètre par sa position dans la requete
// Attention : le premier paramètre de la requete est le 1 etc..
function getQueryStringByPos(ppos)
{
  return aVal[ppos];
}

// Renvoie le nom d'un paramètre par sa position dans la requete
// Attention : le premier paramètre de la requete est le 1 etc..
function getParamNameByPos(ppos)
{
  return aPrm[ppos];
}




Remarques

- Dans la boucle for vous remarquerez que j'ajoute 1 à i (i+1) pour l'affectation des valeurs aux tableaux aVal[] et aPrm[]; C'est parce que je préfère compter à partir de 1 ( contraire à JS qui, lui, compte à partir de 0 ). D'autre part, je ne pouvais pas initialiser i à 1 du fait que le tableau généré par le split() est compté à partir de 0.

- J'espère avoir été clair dans mes explications; Si ce n'était pas le cas, n'hésitez pas à me poser vos questions et me faire part de vos remarques dans le forum lié à cette rubrique.

- Comme toujours, ce script reste perfectible ( tout comme mon explication d'ailleurs );

Que la force soit avec vous et bon amusement...
Fred. R. (alias Derf)
www.exponense.com

Pour pouvoir écrire dans ce forum, identifiez-vous !

  v1.3p © ASP-PHP.net 2002  

Derf le 11/11/2006 (45 303 hits)
Didier 11 logiciels Microsoft GRATUITS dont Visual Studio 2008 Pro,
SQL Server 2005, Expression Studio, Windows Server 2003, Office project Pro, etc... !!!
Au fil des news  
Magazines - Le n°108 de Programmez est disponible
Adobe - Téléchargez gratuitement le dossier spécial Adobe
Magazines - Le N°107 de Programmez est disponible.
Créer une Feature d'administration sous SharePoint - Comment créer un composant d'administration
Dans les précédents articles, nous avons évoqué la création de pages personnalisées dans ...
PHP - Afficher une date : multilangage et relative
Agenda - Inscrivez-vous au WygDay [Wygwam] le 22/5 à Lille
Sync Framework - Introduction au MS Sync Framework - Installation
Microsoft, lors du Keynote du TechEd Europe 2007, a annoncé la mise à disposition d'un nouveau ...
Reporting Services et SharePoint - Utiliser SharePoint comme source de données
Dans un précédent article, nous avons pu apprendre comment créer un rapport utilisant une source de ...
JavaScript - Affiche un calendrier sous une zone de saisie
Adobe - Adobe lance la version bêta publique de Photoshop
Microsoft Expression Web - Premier contact
Je suis revenu des Techday's 2008 avec une idée en tête. Je voulais savoir comme travailler avec ...
PHP & MySQLi - de Hello / Sector One
Hello de Sector One propose un article avec PHP et MySQLi, la nouvelle extension de MySQL
VBScript - Zip de fichiers automatique et efface la source
Dreamweaver CS3 + Php + Mysql - Trucs et Astuces - Part 4 -
Pour changer, deux nouvelles astuces pour vous . Alternate Colors. Inscription et envoi de mail
Magazines - Le N°106 de Programmez est disponible.
Divers - Zone Webmasters
PHP5 - Classe de connexion à MySQL
Agenda - 20/03 : Boostez vos applis PHP-Windows Server 2008
Créer un thème graphique pour WSS V3 - Comment créer un thème graphique pour WSS V3
Nous avons vu dans un précédent article comment créer une master page. Il peut parfois être ...
Les plans de maintenance et SQL Server 2000 - Installer un plan de maintenance sous SQL Server
Dans le cadre de la gestion d'instances SQL Server 2000 hébergeant SharePoint, il est intéressant ...
PHP - PHP et MYSQL - MySQLi - PDO
Jeux de l'été (et de 4) - Un petit jeu de Mastermind
C'est reparti pour un tour... Il y avait longtemps que je n'étais pas venu vous proposer un petit ...
Migration WSS avec un Site Template spécifique - Migration WSS avec un Site Template spécifique
Les précédents articles nous ont permis de voir les différents modes de migration de WSS V2 vers ...
DataBase Upgrade de WSS V2 vers WSS V3 - Upgrade de WSS V2 vers WSS V3 par la DataBase
Parmi les trois modes de migration de Windows SharePoint Services V2 vers WSS V3, nous avons vu les ...
Création de module DotNetNuke en C# - Source : Jerome Fortias sap-integration.net
Je vous propose un nouvel article consacré au développement de modules pour DotNetNuke en C#. Il ...
ASP-PHP.net - On sera aux MS TechDays 2008 ! et vous ?
Créer son modèle de rapports SSRS - Créer son modèle de rapports Reporting Services
Après la création du modèle de style pour Reporting Services, il est souhaitable aussi d'avoir un ...
PHP - publipostage sur rtf préformaté avec mysql
Créer son style de rapports SSRS - Créer son style de rapports Reporting Services
Lorsqu'on travaille avec Reporting Services pour développer ses rapports, on veut très souvent ...
.NET - C#2 et ASP.NET 2.0 - Développez un projet de A à Z
SharePoint - MOSS 2007 - De l'intégration au développement
PHP - PHP 5 MySQL 5 AJAX
Découverte de Visual Studio 2008 -
Microsoft a annoncé, lors du TechEd'07 organisé à Barcelone, la mise à disposition de la release de ...
Adobe - Photoshop Elements 6 Version MAC
Adobe - Adobe sur Intergraphic 2008
Reporting Services et données XML - Utiliser des données XML dans Reporting Services
Une demande récente que j'ai reçue : Comment utiliser des données provenant d'un flux XML dans ...
Dreamweaver CS3 + XML + Ajax - Création d'une région détail
Dans cet article, je vais vous montrer comment utiliser la technique région détail, avec Spry
PHP - Jolie arborescence dynamique
Magazines - Le N°104 de Programmez est disponible
PHP - PhPBB 3.0.0 !!!
Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
v3 © Didier 2003   
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
 Codes Sources Wygwam Groupes Utilisateurs Microsoft MVP CodePPC TechNet ASP-magazine The Inquirer FR El Roubio DotNet Project