XHR

XHR

XMLHttpRequest

XMLHttpRequest est un objet ActiveX ou Javascript qui permet d'obtenir des données au format XML, JSON, mais aussi HTML, ou encore texte simple à l'aide de requêtes HTTP.

On explique le succès récent de l'objet et la très grande utilisation qui en est faite actuellement (parfois au détriment de l'accessibilité d'un site) par la simple création du nom AJAX.

Sommaire

Historique

XMLHttpRequest a d'abord été développé par Microsoft, en tant qu'objet ActiveX, pour Internet Explorer 5.0. (septembre 1998). Il a ensuite été repris et implémenté successivement sous Mozilla 1.0 (mai 2002), Safari 1.2 (février 2004), Konqueror 3.4 (mars 2005) puis Opera 8.0 (avril 2005).

En raison de ces implémentations plutôt récentes, l'objet n'est pas supporté par les navigateurs dits de « vieille génération ».

En avril 2006, il a été proposé pour devenir une recommandation[1] du W3C.

L'utilisation de XMLHttpRequest nécessite l'utilisation du langage javascript.

Les navigateurs l'implémentent de différentes façons : ActiveX pour Internet Explorer, objet pour les autres. La création de l'objet se fait donc différemment selon le navigateur. De plus, pour créer l'ActiveX sous Internet Explorer, il est possible de tester plusieurs versions. Toutefois, après la création de l'objet, les méthodes et attributs sont les mêmes pour tous les navigateurs.

Microsoft a été le premier à incorporer (septembre 1998) des fonctionnalités XMLHttp dans son navigateur Internet Explorer (5 à 7) sous forme d'un ActiveX ( ie < 7 ) sous le nom MSXML. Les développeurs du projet mozilla ont alors implémenté leur version de XMLHTTP sous le nom XMLHttpRequest dans la version Mozilla 1.0 (mai 2002). D'autres navigateurs implémenteront XMLHttp : Safari 1.2 (février 2004), Konqueror 3.4 (mars 2005), Opera 8.0 (avril 2005), icab 3.0b352.

Le World Wide Web Consortium essaie alors de standariser les API en publiant les spécifications de l'API dans sa version 1 sous le nom XMLHttpRequest le 15 avril 2007 et version 2 le 25 février 2008. Ainsi plusieurs implémentations de XMLHttpRequest existent. Pour supporter toutes ces versions une API javascript (AJAX) de haut niveau permet de faire abstraction des différentes implémentations et versions de XMLHttpRequest.

La norme XMLHttpRequest aura un successeur, HMLHttpRequest Level 2 et on envisage de la compléter par l'utilisation d'autres technologies:

  • Le W3C propose Access control pour échanger des données avec des serveurs sur des domaines différents,
  • Microsoft propose XDomainRequest depuis Internet Explorer 8 qui pourrait remplacer ou compléter XHR selon les cas.

Création d'un objet XMLHttpRequest

Quel que soit le navigateur :

function createXhrObject()
{
    if (window.XMLHttpRequest)
        return new XMLHttpRequest();
 
    if (window.ActiveXObject)
    {
        var names = [
            "Msxml2.XMLHTTP.6.0",
            "Msxml2.XMLHTTP.3.0",
            "Msxml2.XMLHTTP",
            "Microsoft.XMLHTTP"
        ];
        for(var i in names)
        {
            try{ return new ActiveXObject(names[i]); }
            catch(e){}
        }
    }
    window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest.");
    return null; // non supporté
}
xhr = createXhrObject();

Avantages et inconvénients

L'avantage principal est dans le côté asynchrone. La page entière ne doit plus être rechargée en totalité lorsqu'une partie doit changer ce qui entraîne un gain de temps et une meilleure interaction avec le serveur et donc le client.

Les inconvénients résident dans le fait que

  • XMLHttpRequest en version actuelle ne peut se connecter qu'à un seul domaine serveur en utilisant le protocole http
  • que le navigateur doit être compatible javascript.
  • que les internautes à navigation spéciale (ex. navigateur vocal) ont du mal à savoir ce qui doit être lu (ce qui a changé) sur la page : c'est un problème d'accessibilité, que la norme WAI-ARIA devrait résoudre pour les applications qui la respectent.

Le contenu dynamique affiché par l'utilisation de javascript explique pourquoi le navigateur ne peut pas avoir le même comportement qu'une page html chargée dans sa totalité (enregistrement des liens, marque page, bouton retour).

D'autres différences existent:

  • le déboguage du javascript est un cauchemar en utilisant une fenêtre (alert), une zone div ou la ligne de commande (console), heureusement des outils comme Firebug ou Visual studio améliorent le déboguage.
  • le nombre de requêtes pouvant s'exécuter en même temps dépend du navigateur.

Récursivité

La récursivité n'est pas assurée. Ainsi du code javascript présent dans la page chargée via XMLHttpRequest ne sera pas exécuté.

Il faut extraire le code javascript depuis la page mère afin de l'exécuter.

Le code suivant exécute le javascript présent entre des balises <script></script> dans la page fille, après l'avoir chargé comme décrit précédemment :

if (XHR.readyState == 4)
{
	document.getElementById('contenu').innerHTML = XHR.responseText;
	var js = document.getElementById('contenu').getElementsByTagName('script');
	for( var i in js )
	{
		eval(js[i].text);
	}
}

Voir aussi

Références

  1. L'objet XMLHttpRequest en français, ou (en) [1]
  • Portail de l’informatique Portail de l’informatique
Ce document provient de « XMLHttpRequest ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article XHR de Wikipédia en français (auteurs)

Игры ⚽ Нужна курсовая?

Regardez d'autres dictionnaires:

  • XHR — XMLHTTP (XMLHttpRequest, XHR) набор API, используемый в языках JScript, VBScript и им подобных для пересылки различных данных (XHTML, HTTP протоколу между браузером и веб сервером. Позволяет осуществлять HTTP запросы к удаленному серверу без… …   Википедия

  • XHR — XMLHttpRequest ist eine API zum Transfer von beliebigen Daten über das Protokoll HTTP. Dabei können sämtliche HTTP Anfragemethoden (unter anderem GET, POST, HEAD, PUT) verwendet werden. Wenn eine Anfrage XML Daten liefert, kann XMLHttpRequest… …   Deutsch Wikipedia

  • Xhr — …   Deutsch Wikipedia

  • XHR — eXtreme Hot Rod (Governmental » Transportation) …   Abbreviations dictionary

  • xhr — ISO 639 3 Code of Language ISO 639 2/B Code : ISO 639 2/T Code : ISO 639 1 Code : Scope : Individual Language Type : Ancient Language Name : Hernican …   Names of Languages ISO 639-3

  • XHR — abbr. Xplizit Hardcore Recording …   Dictionary of abbreviations

  • Comet (programming) — Comet is a web application model in which a long held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it.[1][2] Comet is an umbrella term, encompassing multiple techniques for achieving this… …   Wikipedia

  • XMLHTTPRequest — est un objet ActiveX ou Javascript qui permet d obtenir des données au format XML, JSON, mais aussi HTML, ou encore texte simple à l aide de requêtes HTTP. On explique le succès récent de l objet et la très grande utilisation qui en est faite… …   Wikipédia en Français

  • XMLHttp — XMLHttpRequest XMLHttpRequest est un objet ActiveX ou Javascript qui permet d obtenir des données au format XML, JSON, mais aussi HTML, ou encore texte simple à l aide de requêtes HTTP. On explique le succès récent de l objet et la très grande… …   Wikipédia en Français

  • XMLHttpRequest — est un objet ActiveX ou Javascript qui permet d obtenir des données au format XML, JSON, mais aussi HTML, ou encore texte simple à l aide de requêtes HTTP. On explique le succès récent de l objet et la très grande utilisation qui en est faite… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”