Pour créer un objet XMLHttpRequest compatible avec IE et Firefox j'ai trouvé deux codes différents. Un m'a l'air assez simple et je n'ai pas de mal à le comprendre.
Alors que le 2ème, trouvé ici http://www.openweb.eu.org/articles/objet_xmlhttprequest/, à l'air plus complet mais me pose problème à interpréter.
Le PREMIER:
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("POST", scriptName, true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
--etc--
Le DEUXIEME:
function getHTTPObject()
{
var xmlhttp = false;
/* Compilation conditionnelle d'IE */
/*@cc_on
@if (@_jscript_version >= 5)
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E)
{
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
/* on essaie de créer l'objet si ce n'est pas déjà fait */
if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
{
try
{
xmlhttp = new XMLHttpRequest();
}
catch (e)
{
xmlhttp = false;
}
}
if (xmlhttp)
{
/* on définit ce qui doit se passer quand la page répondra */
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState == 4) /* 4 : état "complete" */
{
if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
{
/*
Traitement de la réponse.
Ici on affiche la réponse dans une boîte de dialogue.
*/
alert(xmlhttp.responseText);
}
}
}
}
return xmlhttp;
}
Voilà mes questions:
- Je ne comprends pas ces lignes, qui contiennent des @ devant certaines instructions, et qui mettent toute la première partie en commentaire.
/*@cc_on
@if (@_jscript_version >= 5)
-----
@else
xmlhttp = false;
@end @*/
- J'ai cherché des infos sur l'instruction try...catch, en pensant que c'était du javascript, mais tout ce que j'ai trouvé la mentionne dans des cours de java. Je ne connais rien en java, mais c'est possible de mélanger java et javascript?
- Est-ce qu'il serait pas possible de combiner ainsi tous les try...catch?
function getHTTPObject()
{
var xmlhttp = false;
/* Compilation conditionnelle d'IE */
/*@cc_on
@if (@_jscript_version >= 5)
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E)
{
try
{
xmlhttp = new XMLHttpRequest();
}
catch (e) // là, il faudrait surement autre chose que (e) mais je sais pas quoi...
{
xmlhttp = false;
}
}
}
}
- Et enfin, quel est l'intérêt du DEUXIEME code? Est-ce que l'éventualité
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
est importante à prendre en compte?
Merci d'avance à tous celles et ceux qui pourront m'éclairer !
:)
