Blog


« Précédent | Suivant »

XmlHttpRequest Test 1

Par Black Fox le 08 Octobre 2004 @ 00:21

Je suis en train de m'ammuser un peut avec les possibilités du XMLHttpRequest. C'est un objet utilisable en javascript pour obtenir le contenu d'un fichier XML distant.

Cet objet as commencé sa vie comme ActiveX sous internet explorer et comme il était bien pratique, as été implémenté sur les navigateurs basés sur Gecko (Mozilla Firefox, Mozilla SeaMonkey, ...), dans Safari et dans Opera.

Utilisations possibles

Le principal avantage de cet objet est qu'il permets de charger le contenu d'un fichier placé sur le serveur à un endroit de la page en Javascript. Il est alors possible de faire une recherche dans une base de donnés sans changer de page ou même de faire un système d'onglets sans changement de page.
Bien évidement il vaut mieux ne surtout pas utiliser ce système sur une page web car il est totalement innaccessible aux personnes malvoyantes ou ateintes d'autres problèmes ou aux personnes utilisant un navigateur texte (Bien que ce serait possible si les navigateurs textes interprétaient le JavaScript).
Par contre dans le cadre d'un intranet c'est l'outil idéal pour transformer encore un peu plus un site en application distante.

Ma série d'expérimentations

Je compte faire plusieurs essais pour dévelloper des classe (Ou peut-être une seule au final qui gèreras tout) qui permetrait d'utiliser le remplacement d'une zone d'un document par un document distant en quelques lignes de code.

Dans ce premier test j'utilise une connection synchronne (Donc le javascript bloque si la connection ne peut être établie avec le site) pour faire une recherche dans une base de donnée MySQL.

Le remplacement du contenu du div qui as l'ID "request-result" se fait alors comme ceci :

req = new XmlGetAndReplace;
req.ReplaceElementContent("request-result", "calledByJs.php?userName=" + userName);

Installer le test

Téléchargez le fichier XMLHttpRequest Test 1 - Search v1.0 et copiez les fichiers sur votre serveur internet. Exécutez le fichier xmlhttprequest_test_1.sql sur votre base MySQL puis changez les constantes contenues dans le fichier connection_options.php pour qu'elles reflettent votre configuration.

Vous pouvez aussi tout simplement essayer cet test sur mon site.
On remarque en testant en ligne que ce test montre un des principaux défaut du code actuel : Il est bien assez rapide en intranet mais bien trop lent sur l'internet ou sur un intranet chargé. Mais la résolution de ce problème est pour un peut plus tard (Elle ne se feras pas sans problème si je veux garder une programmation objet).
Un des autres problèmes est que l'utilisateur n'as aucun feedback sur ce qui se passe pendant que la requette est exécutée, la pochaine version de la classe devrais pouvoir permettre de remplacer l'élément en chargement par un message comme "Chargement...".

Références


Menu de navigation