Tutoriels Trucsweb
          

 

Niveau : INTERMÉDIAIRE (Consulté 80,349 fois)
Compatibilité : Tous les navigateurs

  Ajouter aux favoris  Envoyer à un ami  Télécharger le fichier ZIP  Version imprimable

Récupérer un formulaire en Javascript

Les paramètres GET de la requête HTTP

   par Django (Oznog) Blais, Trucsweb (24 Avril 2001)


Les données d’un formulaire peuvent être envoyées avec la méthode « GET » en d’autres mots, directement dans la requête HTTP. Vous avez sûrement déjà remarqué ces caractères bizarres visibles au bout d’une adresse (URL) dans un navigateur. Le URL et la chaîne de caractères sont déterminés par le paramètre « ACTION » et les paramètres « NAME » d’un formulaire. Saviez-vous que le Javascript permet de récupérer ces données ? La méthode « search » retourne une chaîne de caractères contenant tous les paramètres. Il suffit ensuite de les extraire pour pouvoir les utiliser. Ce tutoriel vous permet d’isoler les paramètres pour éventuellement les utiliser.

Bref rappel du fonctionnement d'un formulaire
Dans la déclaration d'un formulaire, il faut indiquer l'action (la page ou le script qui récupère l'information) et la méthode (comment l'information est envoyée). Ensuite chaque champ de saisie doit avoir un nom pour l'identifier. À l'aide de ce nom, vous pouvez récupérer la valeur entrée par l'usager dans la page HTML définie par l'action. Exemple :

<form method="get" action="page.htm">

On note ici l'utilisation de la méthode " GET " obligatoire pour le bon fonctionnement du script. Et l'action qui contient le nom de la page qui récupère les valeurs.

Les champs de saisies doivent être identifiés par un nom pour y référer lors de la récupération.

<input type="text" name="nom" />
<input type="text" name="prenom" />
<input type="text" name="email" />

Et ne pas oublier le bouton pour envoyer le formulaire. La valeur de ce bouton est ce qui est affiché sur le bouton.

<input type="submit" name="envoyer" value="Soumettre" />

Donc dans une page " saisie.htm " vous aurez quelque chose comme ça :

Page : Saisie.htm

<form method="get" action="recupere.htm">
  <p>Nom : <input type="text" name="nom" /></p>
  <p>Prénom : <input type="text" name="prenom" /><</p>
  <p>Courriel : <input type="text" name="email" /></p>
  <p><input type="submit" name="Submit" value="Soumettre" /></p>
</form>

Une fois que le visiteur aura cliqué sur le bouton " envoyé " les données seront envoyées à la page " recupere.htm "

 

La récupération.
Pour récupérer les données ou les valeurs de chaque champ du formulaire, il faut utiliser le méthode Javascript " search " comme ceci :

nReq = location.search

- nReq égal donc " ?nom=valeur&prenom=valeur&email=valeur "

Puisque la chaîne récupérée contient le symbole inutile " ? ", il faut s'en débarrasser, alors pourquoi ne pas le faire en même temps. J'utilise la méthode " substring " pour isoler le premier caractère, le " ? " et ne garder que le reste de la chaîne, soit sa longueur " length ".

nReq = location.search.substring(1,location.search.length)

- nReq égal donc " nom=valeur&prenom=valeur&email=valeur "

 

La méthode " split " permet de diviser une chaîne de caractères, selon un séparateur, dans un tableau (array). Et le séparateur est éliminé du même coup. Le séparateur en question est le symbole " & " qui sépare les paramètres.

nReq = nReq.split("&");

nReq égale maintenant :
- nReq[0] = " nom=valeur "
- nReq[1] = " prenom=valeur "
- nReq[2] = " email=valeur "

 

Il ne reste qu'à isoler le nom du paramètre ou de la variable avec sa valeur. Pour ce faire il faut utiliser la méthode " substring " jumelé avec la méthode " indexOf " qui permet de donner la position d'un caractère dans une chaîne de caractères. Dans ce cas précis le symbole " = ". Donc pour extraire le nom du paramètre il faut un " substring " de 1 à la position du " = ".

MaVariable = nReq[i].substring(0, nReq[i].indexOf("="))

Pour extraire la valeur il faut partir de la position du " = " + 1 à la longueur totale de la chaîne soit " length ".

MaValeur = nReq[i].substring(param[i].indexOf("=")+1, nReq[i].length)

 

Voilà, vos paramètres sont récupérés. Mais, pour automatiser quelque peu cette technique, j'ai fait un petit script qui permet d'extraire automatiquement un nombre inconnu de paramètres avec une fonction qui les transférer dans une variable associée. Voici un exemple de ce script qui fonctionne tout seul. L'exemple utilise trois paramètres mais vous n'avez qu'à ajuster le formulaire et la section du script " À MODIFIER " (en rouge dans le code suivant) pour ajouter d'autres paramètres. Vous pouvez télécharger ce script ici.

 

ATTENTION: Modification du 1er aôut 2002
Le résultat retourné doit être décodé, en effet tous les caractères spéciaux comme les accents doivent être décodé. La fonction Javascript unescape le fait très bien à l'exception de l'espace représenté par le symbole (+). Il faut donc le faire manuellement. La nouvelle fonction est dans le code complet suivant, c'est decode(chaîne).

Page : page.htm

<script type="text/javascript" language="javascript">
<!-- Début
// ********************************************
// Récupération de paramètre d'une requête HTTP
// ou récupération des données d'un formulaire.
// Auteur : Oznog (www.trucsweb.com)
// ********************************************

// NE PAS MODIFIER CE CODE
var paramOk = true;

function FaitTableau(n) {
  // Création d'un tableau (array)
  // aux dimensions du nombre de paramètres.
  this.length = n;
  for (var i = 0; i <= n; i++) {
    this[i] = 0
  }
  return this
}

function ParamValeur(nValeur) {
  // Récupération de la valeur d'une variable
  // Pour créer la variable en Javascript.
  var nTemp = "";
  for (var i=0;i<(param.length+1);i++) {
    if (param[i].substring(0,param[i].indexOf("=")) == nValeur)
      nTemp = param[i].substring(param[i].indexOf("=")+1,param[i].length)
  }
  return Decode(nTemp)
}

// Extraction des paramètres de la requête HTTP
// et initialise la variable "paramOk" à false
// s'il n'y a aucun paramètre.
if (!location.search) {
  paramOk = false;
}
else {
  // Éliminer le "?"
  nReq = location.search.substring(1,location.search.length)
  // Extrait les différents paramètres avec leur valeur.
  nReq = nReq.split("&");
  param = new FaitTableau(nReq.length-1)
  for (var i=0;i<(nReq.length);i++) {
    param[i] = nReq[i]
  }
}

// Décoder la requête HTTP
// manuellement pour le signe (+)
function Decode(tChaine) {
  while (true) {
    var i = tChaine.indexOf('+');
    if (i < 0) break;
    tChaine = tChaine.substring(0,i) + '%20' + tChaine.substring(i + 1, tChaine.length);
  }
  return unescape(tChaine)
}
// End -->
</script>

<script type="text/javascript" language="javascript">
<!-- Début
// ***************************************
// À MODIFIER - AJOUTER DES PARAMÈTRES ICI
// ***************************************
// Créer les variables avec leur contenu
// basé sur la requête:
// ?nom=...&prenom=...&email=...
if (paramOk) {
  nom = ParamValeur("nom");
  prenom = ParamValeur("prenom");
  email = ParamValeur("email");
}
// End -->
</script>

</head>

<body>
<form method="get" action="page.htm">
<p>Nom : <input type="text" name="nom" /></p>
<p>Prénom : <input type="text" name="prenom" /></p>
<p>Courriel : <input type="text" name="email" /></p>
<p><input type="submit" name="Submit" value="Soumettre" /></p>

</form>

<script type="text/javascript" language="javascript">
<!-- Début
// ***************************************
// POUR L'EXEMPLE, AFFICHAGE DES VARIABLE
// ***************************************
if (paramOk) {
  document.write(nom);
  document.write(" ");
  document.write(prenom);
  document.write(", ");
  document.write(email);
}
// End -->
</script>
</body>
</html>

 Début de la page


TrucswebTrucsweb


Fil d'info Trucsweb


 
sp

 
sp
 S U I T E   D U   S U J E T 
sp
Envoyer un formulaire sans CGI avec mailto : Fonction universelle Javascript

Hébergement de qualité!

partenaire
Rechercher un tutoriel!
 
recherche avancée
Abonnez-vous!

 

Save the Net

 
sp
 C O M M A N D I T E S 
sp






 
sp
 T U T O R I E L S 
sp
· ASP / VBscript
· C/C++
· CSS
· DHTML
· CGI / Perl
· HTML
· Java/JSP
· Javascript
· PHP
· SSI
· WAP/WML
· XML/XSL
· Infographie
· Flash et Shockwave
· Audiovisuel
· Images gratuites
· Hébergement
· Analyses de logiciels
· Internet et Protocoles
· Veille intégrée
· Référencement
· Sécurité
· Outils gratuits
 
sp
 F O R U M S 
sp
· Forum Javascript
· Forum HTML/CSS
· Forum ASP/VBScript
· Forum Flash
· Tous les forums
 
sp
 S E R V I C E S 
sp
Generateur Trucsweb
· Générateur
· Répertoire
· Logithèque
· Glossaire
· Forum
· Nouveautés Dev Zone
· Ajouter un site
· Ajouter un logiciel
· Ajouter un tutoriel
· Fil d'info sur votre site
· Tester votre site
 
sp
 A P P L I C A T I O N S 
sp
· twCompteur 1.0 Nouveau
· twCalende 1.0 Nouveau
· twLiMenu 1.0 Nouveau
· twValide 2.2 sp
· twAliste 1.0 sp
· twASPDate 2.0 sp
· twASPLivre 1.0 sp
 
sp
 R É F É R E N C E S 
sp
· W3C HTML 4.0
· W3C XHTML 1.0
· Web Design Group
· W3C SMIL 2.0
· W3C XML 1.0
· XML Cover Pages
· W3C CSS LEVEL 2
· Netscape Javascript 1.5
· Netscape Javascript 1.4
· Netscape Javascript 1.3
· Netscape DHTML
· Gecko DOM ref.
· IE DHTML
· VBScript Language Ref.
· JScript Language Ref.
· ASP Object Quick Ref.
· ADO API Reference
· Microsoft IIS5
· MSDN Library
· RFC Editor Site
· HTML 4.0 code de caractères
· Unicode fonts
· Manuel PHP
· Documentation Perl
· Perl 5 Reference Guide
· Flash actionscript FAST
· ActionScript dictionary
· MySQL Manual
· SQL Pro (F. Brouard)
· Java Language Spec.
· Java 2 SDK Doc. V1.3.1
· JavaServer Pages Ref.
· C/C++ Language Ref.
· Python Library Reference
· Les Navigateurs
· Terminologie d'Internet
· Traduction
· Traduction systran
· Traduction d'interface client
· Extensions de fichiers
· Virus Wildlist
· Virus Alerts
 
sp
 D O M A I N E S 
sp
iWeb

iWeb
 
sp
 C O P Y R I G H T  
sp

 

accueil | tutoriels | logithèque | répertoire | forum



© 1997-2006
Django (Oznog) Blais
Rivière-du-Loup, Québec
Ajouter à votre Sidebar  RSS 1.0
 
Conception Oznog co. Multimédia


Hit-Parade    Tout navigateurs   

24 visiteurs