Document.getElementById(strId3).innerHTML = req; Problème avec IE
mlinux
Messages postés6Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention 9 novembre 2009
-
27 avril 2008 à 11:08
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 2013
-
28 avril 2008 à 14:47
Bonjour,
J'ai un petit script AJAX qui fonctionne avec Firefox et Safari et ne fonctionne pas avec Internet Explorer IE 8 et IE 8.
/*******************************************************************************/ /* */
/* Script AJAX dans un DIV avec rafraichissement toutes les CINQ secondes */
/* */
/* Source : http://openweb.eu.org/articles/objet_xmlhttprequest */
/* */
/* Avec Firefox = > OK */
/* Avec Safari => OK */
/* */
/* Avec IE8 et IE7 => Erreur "A Runtime Error has occurred" */
/* Au niveau de : "document.getElementById(strId3).innerHTML = req;" */
/* */
/* */
/*******************************************************************************/
var strId3 = "div_AJAX_3";
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 */
{
req = xmlhttp.responseText;
// alert(req);
document.getElementById(strId3).innerHTML = req;
}
}
}
}
return xmlhttp;
} // Fin de function getHTTPObject()
function Affich_AJAX_3()
{
var strFichier = "script.php";
var xmlhttp = getHTTPObject(); /* Création de l'objet : */
xmlhttp.open("GET", strFichier, true); /* Préparation d'une requête asynchrone de type GET : true => Dialogue asynchrone */
xmlhttp.send(null); /* Effectue la requête : */
setTimeout("Affich_AJAX_3();", 20000); /* Relance script toutes les 5 secondes */
} // Fin de function Affich_AJAX_3()
L'erreur A Runtime Error has occurred se trouve sur document.getElementById(strId3).innerHTML = req;:
Nota : req = xmlhttp.responseText; est correct puisque le script fonctionne correctement avec Firefox et Safari. De plus l'activation de alert(req); montre bien le code récupéré.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 27 avril 2008 à 13:40
j'ai aussi oublié de dire qu'il vaudrait mieux
relancer l'appel au php uniquement lorsqu'une réponse est revenu....
<hr /> Cordialement Bul [mon Site] [M'écrire]
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 28 avril 2008 à 14:47
tant mieux... nous on ne pouvait pas trouver....
malgré tout, au moins :
>>il vaudrait mieux ne relancer l'appel au php que lorsqu'une réponse est revenu....
>>derrière l'url ajouter ?un_truc_aléatoire new Date() par exemple pour gérer le cache !
<hr /> Cordialement Bul [mon Site] [M'écrire]