4D v16.3Traiter les données reçues |
||
|
4D v16.3
Traiter les données reçues
Traiter les données reçues
Le serveur Web de 4D vous permet de récupérer les données 'postées', c'est-à-dire les données saisies par les utilisateurs via des formulaires Web et renvoyées au serveur via des boutons ou des éléments d'interface, en mode POST ou en mode GET. Le serveur Web accepte plusieurs URLs spécifiques pouvant être associées aux boutons afin que l'envoi du formulaire déclenche le traitement côté serveur. Ces URLs sont décrits dans la section URLs et actions de formulaires. Ce chapitre présente les principes à mettre en oeuvre afin de récupérer les données présentes dans les formulaires ayant été retournés au serveur. Lorsque le serveur Web reçoit un formulaire "posté", vous pouvez récupérer dans 4D les valeurs des objets HTML qu'il contient. Ce principe peut être mis en oeuvre dans le cas d'un formulaire Web, envoyé par exemple avec WEB ENVOYER FICHIER ou WEB ENVOYER BLOB, dans lequel l'utilisateur saisit ou modifie des valeurs puis clique sur le bouton de validation. Dans ce cas, 4D peut récupérer les valeurs des objets HTML présents dans la requête de deux manières :
La commande WEB LIRE VARIABLES permet de récupérer les valeurs sous forme de textes, tandis que les commandes WEB LIRE PARTIE CORPS et WEB Lire nombre parties corps permettent notamment de récupérer des fichiers postés, via des BLOBs. Note de compatibilité (4D v13.4) : Dans les versions précédentes, 4D recopiait directement la valeur des variables reçues via un formulaire Web posté ou un URL GET, dans des variables process 4D (en mode compilé, ces variables devaient être déclarées dans la méthode COMPILER_WEB). Ce fonctionnement est supprimé à compter de 4D v13.4 ; il est maintenu par compatibilité dans les bases de données converties mais peut être désactivé à l'aide de l'option de compatibilité Affectation automatique des variables dans la Page Compatibilité des Propriétés de la base (il est recommandé de désélectionner cette option et d'utiliser les commandes WEB LIRE VARIABLES ou WEB LIRE PARTIE CORPS dans vos bases). Considérons cette page de code HTML : <html> <head> <title>Welcome</title> <script language="JavaScript"><!-- function GetBrowserInformation(formObj){ formObj.vtNav_appName.value = navigator.appName formObj.vtNav_appVersion.value = navigator.appVersion formObj.vtNav_appCodeName.value = navigator.appCodeName formObj.vtNav_userAgent.value = navigator.userAgent return true } function LogOn(formObj){ if(formObj.vtUserName.value!=""){ return true } else { alert("Enter your name, then try again.") return false } } //--></script> </head> <body> <form action="/4DACTION/WWW_STD_FORM_POST" method="post" name="frmWelcome" onsubmit="return GetBrowserInformation(frmWelcome)"> <h1>Welcome to Spiders United</h1> <p><b>Please enter your name:</b> <input name="vtUserName" value="" size="30" type="text"></p> <p> <input name="vsbLogOn" value="Log On" onclick="return LogOn(frmWelcome)" type="submit"> <input name="vsbRegister" value="Register" type="submit"> <input name="vsbInformation" value="Information" type="submit"></p> <p> <input name="vtNav_appName" value="" type="hidden"> <input name="vtNav_appVersion" value="" type="hidden"> <input name="vtNav_appCodeName" value="" type="hidden"> <input name="vtNav_userAgent" value="" type="hidden"></p> </form> </body> </html>Lorsque la page est envoyée au navigateur Web par 4D, elle se présente ainsi : Voici les caractéristiques de cette page :
Examinons maintenant la méthode 4D (nommée ici WWW_STD_FORM_POST) qui est appelée lorsque l'utilisateur clique sur l'un des boutons du formulaire HTML : // Récupération de la valeur des variables Voici les caractéristiques de cette méthode :
Si vous utilisez un objet SELECT, c'est la valeur de l'élément sélectionné dans l'objet qui est retournée dans la commande WEB LIRE VARIABLES, et non la position de l'élément dans le tableau comme dans 4D. Les valeurs retournées par WEB LIRE VARIABLES sont toujours de type texte. A compter de 4D v15 R3, le serveur Web intégré de 4D prend en charge le mécanisme d'encodage de transfert morcelé (chunked transfer encoding) pour les fichiers téléchargés vers le serveur (upload). L'encodage de transfert morcelé est un mécanisme de transmission des données spécifié dans le protocole HTTP/1.1. Il permet de commencer à transférer des données via une série de "chunks" (morceaux) sans qu'il soit nécessaire de connaître la taille finale des données. Note : Le serveur Web 4D prend également en charge l'encodage de transfert morcelé pour le téléchargement des données du serveur vers les clients Web (cf. WEB ENVOYER DONNEES). Pour plus d'informations sur l'implémentation côté client des transferts morcelés, veuillez vous reporter à la RFC7230 ou à la page qui lui est consacrée sur Wikipedia. La méthode COMPILER_WEB, si elle existe, est systématiquement appelée lorsque le serveur HTTP reçoit une requête dynamique et appelle le moteur de 4D. C'est par exemple le cas lorsque le serveur Web 4D reçoit un formulaire posté ou un URL contenant l'action 4DCGI/. Cette méthode est destinée à contenir les directives de typage et/ou d’initialisation de variables utilisées lors des échanges Web. Elle sera utilisée par le compilateur en cas de compilation de la base. La méthode COMPILER_WEB est commune à toutes les pages Web. Par défaut, la méthode COMPILER_WEB n’existe pas. Vous devez la créer explicitement. Web Services : La méthode projet COMPILER_WEB est également appelée, si elle existe, à chaque requête SOAP acceptée. Vous devez utiliser cette méthode pour déclarer toutes les variables 4D associées à des arguments SOAP entrants et ce, pour toutes les méthodes publiées comme Web Services. En effet, l’utilisation de variables process dans les méthodes Web Services nécessite leur déclaration avant l’appel de la méthode. Pour plus d'informations sur ce point, reportez-vous à la description de la commande SOAP DECLARATION.
Voir aussi
Balises de transformation 4D
|
PROPRIÉTÉS
Produit : 4D
HISTORIQUE
Modifié : 4D v15 R3 MOTS-CLÉS chunked transfer encoding, COMPILER_WEB UTILISATION DE L'ARTICLE
4D - Langage ( 4D v16) |