> Tech > Simplifier les applications web avec Ajax, RPG et XSL

Simplifier les applications web avec Ajax, RPG et XSL

Tech - Par Don Denoncourt - Publié le 24 juin 2010
email

Ajax apporte une solution élégante au problème chronique que un jeu de résultats SQL. Vous pouvez convertir dynamiquement les jeux de résultats SQL en XML au moyen d’un utilitaire simple, mais si l’API RPG est proposée avec un service Web, ce dernier génère lui-même XML. Dans cet article, je montre comment utiliser Ajax pour invoquer un service Web basé sur RPG, et comment traduire en HTML la réponse XML générée par RPG.

Simplifier les applications web avec Ajax, RPG et XSL

Tous les environnements de développement intégrés (IDE, integrated development environments) ont des assistants qui créent du code côté serveur pour communiquer avec les services Web. Cependant, vous pouvez invoquer un service Web directement à partir de votre HTML avec JavaScript. Le protocole sous-jacent que les services Web utilisent pour packager les requêtes de réseau est SOAP (Simple Object Access Protocol), un langage XML.

L’API RPG que je prends comme exemple, a un paramètre d’entrée qui spécifie un certain nombre de comptes à extraire. La figure 1 montre le XML SOAP qui demande au service Web deux comptes, et la figure 2 affiche la réponse XML SOAP. Il vous suffit donc de savoir comment adresser une requête SOAP à partir de HTML, et comment convertir la réponse XML en HTML. L’exemple getAccounts.html (figure 3) demande le nombre de comptes (figure 4).

 La réponse du service Web figure sur la même page. Pour montrer la réponse XML SOAP réelle, je place le texte dans la zone texte grise désactivée en figure 5. À noter que le XML est reformaté en une table HTML en haut de la page. Vous allez effectuer cette conversion avec un fichier XSL (Extensible Stylesheet Language) (figure 6). Avant de plonger dans le code, je tiens à signaler deux problèmes majeurs.

Premièrement, le JavaScript nécessaire pour effectuer les requêtes SOAP basées sur Ajax est dépendant du navigateur. Deuxièmement, seul Internet Explorer permet des transformations XSL. Heureusement, il existe des dizaines de solutions au premier problème et une poignée pour résoudre le second. L’une des solutions – Sarissa – est commune aux deux. Elle doit son nom à la longue lance utilisée à l’époque du guerrier Ajax. C’est un jeu de routines JavaScript open-source qui fournit des transformations XSL indépendantes du navigateur et des fonctions Ajax standardisées qui marchent sur la plupart des navigateurs, y compris Internet Explorer et Firefox. Vous pouvez la télécharger à partir de SourceForge (sourceforge.net/projects/ sarissa).

Le téléchargement Sarissa et sa documentation associée est constitué de cinq fichiers JavaScript. Pour cet article, j’en utilise deux : sarissa_js et sarissa_dhtml.js (téléchargez-les sur www.itpro.fr Club Abonnés). Le fichier getAccounts.html (figure 3) charge les deux fichiers JavaScript Sarissa et a quatre fonctions personnal i s é e s : getAccounts, ajaxResponseFunction, xslTransformAjax SoapResponse et getXmlDocument. Une ligne de code (var ajaxRequest;) n’est pas contenue dans une fonction. Les variables JavaScript qui ne sont pas contenues dans une fonction sont considérées globales et, comme la variable ajaxRequest est utilisée dans toutes les fonctions, elle doit être globale. La fonction getAccounts est invoquée quand un utilisateur clique sur le bouton Get Accounts dans le formulaire HTML.

Téléchargez cette ressource

Travail à distance – Guide complet pour les Directions IT et Métiers

Travail à distance – Guide complet pour les Directions IT et Métiers

Le travail à distance met à l'épreuve la maturité numérique des entreprises en termes de Cybersécurité, d'espace de travail, de bien-être des collaborateurs, de communication et gestion de projet à distance. Découvrez, dans ce nouveau Guide Kyocera, quels leviers activer prioritairement pour mettre en place des solutions de travail à domicile efficaces, pérennes et sécurisées.

Tech - Par Don Denoncourt - Publié le 24 juin 2010