Exemple AJAX : Chargement d’un fil RSS et Transformation XSLT côté client (étape 1)

Je ne suis pas particulièrement rapide pour terminer l’exemple de AJAX, trop occupé ces temps-ci. Voilà tout de même la première étape : il s’agit créer l’objet XMLHttpRequest qui sert à communiquer avec votre serveur distant. Notez que normalement, vous ne pouvez communiquer qu’avec le domaine d’où vient la page incluant le script.

La manière d’utiliser XMLHttpRequest est suposément identique peu importe le fureteur que vous utilisez, sauf pour la création de l’objet. Internet Explorer utilise un contrôle ActiveX, provenant de sa librairie XML, tandis que les autres fureteurs implémentent cette fonction nativement. Détrompez-vous, Microsoft est l’entité qui a innové ici, car l’objet XMLHttp est disponible depuis bien plus longtemps sous sa plate forme. Je n’ai pas l’information exacte, mais cela existe depuis au moins Internet Explorer 5.0, probablement 4.0 même.

Pour Firefox, Safari ou Opera 8, c’est très simple, l’objet se créé par la code suivant :

var xmlhttp = new XMLHttpRequest();

Pour Internet Explorer, c’est un peu plus compliqué. Il existe plusieurs versions de la librairie XML de Microsoft (msxml.dll). Microsoft a de mieux en mieux respecté les divers standards XML (DOM, XPATH, XSLT, XSD, etc) avec l’évolution de sa librairie. Toutefois, pour garder une compatibilité descendante, plusieurs versions de la même libairie peuvent coexister sur un même ordinateur. Pour s’assurer qu’une mise à jour de la librairie n’amène pas une incomptibilité avec les logiciels ayant été programmés avec celle-ci, la création de l’objet XMLHttp se fait avec un appel différent selon les versions de msxml. Nous essaierons donc de créer une version plus récente, pour ensuite, si cela ne fonctionne pas, créer une version moins récente. Plus spécifiquement, cela donne ceci :

   try { 	var aObj = new ActiveXObject("Msxml2.XMLHTTP");   } catch (e) { 	try { 		var aObj = new ActiveXObject("Microsoft.XMLHTTP"); 	} catch(e) { 		var aObj = false; 	}   } 

Il existe des versions plus récentes que Msxml2.XMLHTTP, mais celle-ci est suffisante et devraient être présente sur tous les postes récents. La 2e version, avec laquelle j’avoue ne pas avoir testé, devrait fonctionner sur les postes avec Internet Explorer 5.0 pour qui la librairie MSXML n’a pas été mise à jour. (MSXML est un composant séparé de Internet Explorer, et peut être mise à jour avec des services pack ou certains logiciels ayant besoin de fonctions XML). Plus d’information sur ce sujet est disponible sur le site de Microsoft, ici .

En encapsulant le tout dans une fonction, et en rajoutant une gestion d’erreur presque innexistante, nous avons ceci :

 function getNewXMLHTTP() {   try { 	return new XMLHttpRequest();   } catch(e) { 	try { 		var aObj = new ActiveXObject("Msxml2.XMLHTTP"); 	} catch (e) { 	  try { 		var aObj = new ActiveXObject("Microsoft.XMLHTTP"); 	  } catch(e) { 		return false; 	  }         }   }   return aObj; } try { var xmlHttp = getNewXMLHTTP(); } catch(e) { 	alert("Pour une raison ou une autre,il y a eu une erreur                 sur cette page et la gestionnaire d'erreur est                 trop paresseux pour faire de quoi d'utile. Désolé."); } 

Prochaine étape, accès au RSS! (quand je vais avoir le temps!!!)

Ah, oui, un petit exercice pour les moins paresseux que moi (ou ceux qui ont plus de temps) faudrait ajouter une gestion d’erreur qui a du bon sens à ce code…!

Laisser un commentaire