Génération du site web de l'ULB - format xml
sommairesommaireindexindexpage précédentepage précédentepage suivantepage suivanteimprimerimprimerenvoyerenvoyermarquermarquer

<action>: envoi des données récoltées par un formulaire vers une application

Un sous-élément <action> placé tout au début de l'élément <formulaire> permettra d'envoyer les données récoltées par le formulaire à une application. L'application en question sera mentionnée grâce à un attribut de type hypertexte (le plus souvent href).

L'appel à l'application se fera en post ou en get.

En règle générale, cette application va répondre avec du code HTML, qui sera affiché par le navigateur, en lieu et place de la page qui contient le formulaire.


Exemple d'<action>

Votre email:

Code de cet exemple
<formulaire>
   <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php"/>
   <input>   
      <nom>email</nom>
      <libellé>votre email</libellé>
      <valeur>Séraphin.Lampion@ulb.ac.be</valeur>
   </input>
   <bouton>
      <libellé>Envoyer</libellé>
   </bouton>
</formulaire>

Contenu de l'élément <action>

L'élément <action> peut contenir les sous-éléments suivants (ils ne sont pas obligatoires):

<paramètre>
<parameter>

crée un paramètre supplémentaire à envoyer à l'application distante. Ce paramètre viendra s'ajouter aux paramètres récoltés par le formulaire

<actions exécuter="...">

permet de déclencher des actions au moment de l'affichage de la page, avant l'envoi des données du formulaire ou après l'envoi des données du formulaire


L'élément <action> peut posséder les attributs suivants:

ancre

place une ancre sur l'action, afin de la distinguer des autres actions dans le cas où plusieurs actions coexistent dans le même formulaire

method

méthode d'envoi des données du formulaire à l'application distante: post ou get

href
(ou tout autre attribut hypertexte)

donne l'adresse de l'application distante

nouvel-onglet

pour afficher le résultat dans un nouvel onglet ou une nouvelle fenêtre

cible

pour afficher le résultat dans une balise <html> ou pour exécuter des actions juste avant l'envoi des données du formulaire à l'application distante


Exemple
<formulaire style="voile" bords="arrondis">
   <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php"/>
   <input>   
      <nom>lastname</nom>
      <libellé>nom</libellé>
   </input>
   <input>
      <nom>firstname</nom>
      <libellé>prénom</libellé>
   </input>
   <bouton>
      <nom>go</nom>
      <libellé>Envoyer</libellé>
   </bouton>
</formulaire>

Nom:

Prénom:


Le même exemple que le précédent, mais une confirmation est demandée à l'utilisateur avant d'envoyer des données, grâce à des actions exécutées par un élément <actions>. Un paramètre supplémentaire est également envoyé contenant l'URL de la page courante.

Exemple
<formulaire style="voile" bords="arrondis">
   <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php">
      <actions exécuter="avant">confirmation(êtes-vous sûr ?),si:fin:arrêter</actions>
      <paramètre nom="page">{page:pageURL}</paramètre>
   </action>
   <input>   
      <nom>lastname</nom>
      <libellé>nom</libellé>
   </input>
   <input>
      <nom>firstname</nom>
      <libellé>prénom</libellé>
   </input>
   <bouton>
      <nom>go</nom>
      <libellé>Envoyer</libellé>
   </bouton>
</formulaire>

Nom:

Prénom:


Méthode d'envoi: post ou get

Par défaut, les données seront envoyées en post. Vous pouvez changer cela grâce à un attribut méthode (ou method) qui peut valoir get ou post.

post et get sont deux méthodes de requête différentes utilisées par le protocole HTTP. Leur principale différence est le moyen utilisé pour transmettre les paramètres (en get les paramètres sont insérés dans l'URL, tandis qu'en post les paramètres sont insérés dans le corps de la requête).

En théorie, get ne devrait être utilisé que pour accéder à des ressources qui ne seront pas modifiées par la requête, tandis que post sera utilisé pour des requêtes destinées à modifier des ressources (ajout/suppression/modification).

Dans la pratique, vous devez vous conformer à ce qui est utilisé par l'application (certaines fonctionnent en get, d'autres en post et d'autres encore supportent les deux).


Exemple en get
<formulaire style="voile" bords="arrondis">
   <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" méthode="post"/>
   <input>   
      <nom>lastname</nom>
      <libellé>nom</libellé>
   </input>
   <input>
      <nom>firstname</nom>
      <libellé>prénom</libellé>
   </input>
   <bouton>
      <nom>go</nom>
      <libellé>Envoyer</libellé>
   </bouton>
</formulaire>

Nom:

Prénom:


Exemple en post
<formulaire style="voile" bords="arrondis">
   <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" méthode="post"/>
   <input>   
      <nom>lastname</nom>
      <libellé>nom</libellé>
   </input>
   <input>
      <nom>firstname</nom>
      <libellé>prénom</libellé>
   </input>
   <bouton>
      <nom>go</nom>
      <libellé>Envoyer</libellé>
   </bouton>
</formulaire>

Nom:

Prénom:


Réponse de l'application

L'application distante va, en règle générale, renvoyer du code HTML que le navigateur affichera en lieu et place de la page web courante (c'est-à-dire celle qui contenait le formulaire). Ce mode de fonctionnement est celui qui est utilisé en HTML.

De ce fait, une fois que cette réponse est affichée, il n'est plus possible d'utiliser des resources définies dans la page précédente. c'est ainsi que les actions éventuelles que vous envisagiez d'exécuter après avoir reçu la réponse ne pourront pas être exécutées (ces actions disparaissent en même temps que la page).


Vous avez plusieurs possibilités pour contourner ce fait:

  • utiliser un attribut nouvel-onglet pour afficher la réponse dans un nouvel onglet ou une nouvelle fenêtre du navigateur;

  • utiliser une action html:xxxx pour afficher la réponse dans une balise <html> au sein de la page.

Dans les deux cas, la page courante restera affichée dans le navigateur. Il vous incombe alors d'utiliser des actions pour modifier le contenu de cette page, par exemple en faisant disparaître le bloc qui contient le formulaire et en faisant apparaître un bloc contenant un message de confirmation.


Une dernière solution, plus adéquate, consiste à ne pas utiliser cet élément <action>, mais à le remplacer par un élément <interaction>. Dans ce cas, la réponse de l'application distante sera une série d'actions qui seront exécutées pour, par exemple, faire disparaître le formulaire et le remplacer par un message de confirmation ou, le cas échéant, un message d'erreur.


Ouvrir dans un nouvel onglet

Le lien hypertexte peut être accompagné de l'attribut nouvel-onglet pour afficher la réponse au formulaire d'un un nouvel onglet du navigateur.

Exemple
<formulaire style="voile" bords="arrondis">
   <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dumpform.php" nouvel-onglet="oui"/>
   <input>   
      <nom>lastname</nom>
      <libellé>nom</libellé>
   </input>
   <input>
      <nom>firstname</nom>
      <libellé>prénom</libellé>
   </input>
   <bouton>
      <nom>go</nom>
      <libellé>Envoyer</libellé>
   </bouton>
</formulaire>

Nom:

Prénom:


Afficher la réponse dans une balise <html> grâce à une action html:xxxx

Dans cet exemple, le formulaire possède une ancre "form". Il sera masqué au moment de l'envoi des données, grâce à masquer:form dans l'attribut cible, faisant ainsi disparaître le formulaire après cet envoi.

L'application distante qui recevra les données du formulaire, répondra avec du code html qui sera affiché non pas dans une nouvelle page, mais dans une balise <html ancre="reponse"> destinée à cet effet, grâce à une deuxième action html:reponse placée dans le même attribut cible.

Exemple
<formulaire style="voile" bords="arrondis" ancre="form">
   <action href="http://www.ulb.ac.be/sitemanagerapps/samples/dump.php"
           cible="masquer:form,html:reponse"/>
   <input>   
      <nom>lastname</nom>
      <libellé>nom</libellé>
   </input>
   <input>
      <nom>firstname</nom>
      <libellé>prénom</libellé>
   </input>
   <bouton>
      <nom>go</nom>
      <libellé>Envoyer</libellé>
   </bouton>
</formulaire>

<html ancre="reponse"></html>

Nom:

Prénom:

ULB - entreprise écodynamique