Accueil > Forum > > > > Modif innerHTML d'un div entre 2 XMLHttpRequest synchrones sous IE
Modif innerHTML d'un div entre 2 XMLHttpRequest synchrones sous IE
vendredi 2 septembre 2011 à 12:22:24 |
Modif innerHTML d'un div entre 2 XMLHttpRequest synchrones sous IE

pacadebord
|
Bonjour,
Je suis en train de concevoir un outil qui, au clic sur un bouton, parcours les lignes d'un tableau, chaque ligne contenant 3 colonnes (pour simplifier) : une valeur "maREf" et deux cases à cocher.
Pour chaque ligne et pour chaque case cochée, je passe maRef en paramètre à une cgi en VB6 (il y en a donc deux différentes) à l'aide de XMLHttpRequest synchrone. Je remplace, au final, la case cochée par le résultat true ou false du responseText de ma requête.
Code Javascript :
function getXhr(){
var xhr=null;
if(window.XMLHttpRequest)
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e1){
xhr = null;
}
}
}
else {
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
}
return xhr;
}
function lance(){
var montbl = document.getElementById("idtabclt");
var montblbody = montbl.getElementsByTagName("tbody")[0];
for (var i=0; i < montblbody.rows.length; i++){
var refcpt = montblbody.rows[i].cells[1].innerHTML
if (montblbody.rows[i].cells[6].getElementsByTagName('input')[0].checked){
document.getElementById("ge" + refcpt).innerHTML = "<img border='0' src='images/ajax-loader.gif'>";
envoi_cg1("cgi/clo/cgi_retsouf_clo.exe?act=clo&cpt=" + refcpt + "&typ=ge" + "&uid=" + Math.random(), "ge" + refcpt);
}
if(montblbody.rows[i].cells[7].getElementsByTagName('input')[0].checked){
document.getElementById("av" + refcpt).innerHTML = "<img border='0' src='images/ajax-loader.gif'>";
envoi_cg1("cgi/clo/cgi_retsouf_clo.exe?act=clo&cpt=" + refcpt + "&typ=av" + "&uid=" + Math.random(), "av" + refcpt);
}
}
}
function envoi_cg1(url, monid){
var xhr1 = getXhr()
document.getElementById(monid).innerHTML = "<img border='0' src='images/ajax-loader.gif'>";
xhr1.open("GET", url, false);
xhr1.send(null);
if(xhr1.status == 200){
if (xhr1.responseText.toLowerCase() == "true"){
document.getElementById(monid).innerHTML = "<img border='0' src='images/true.gif'>";
}
else {
document.getElementById(monid).innerHTML = "<img border='0' src='images/false.gif'>";
}
}
}
function envoi_cgi2(url, monid){
var xhr2 = getXhr()
document.getElementById(monid).innerHTML = "<img border='0' src='images/ajax-loader.gif'>";
xhr2.open("GET", url, false);
xhr2.send(null);
if(xhr2.status == 200){
if (xhr2.responseText.toLowerCase() == "true"){
document.getElementById(monid).innerHTML = "<img border='0' src='images/true.gif'>";
}
else {
document.getElementById(monid).innerHTML = "<img border='0' src='images/false.gif'>";
}
}
}
J'observe, quand je lance le bidule sous FF6, que tout fonctionne. Quand je dis que ça fonctionne, c'est que chaque requête synchrone renvoi un résultat et que ma case à cocher est bien remplacée. On peut donc suivre la progression de l'ensemble. Je suis plutôt content de moi sauf que sous IE6 et IE8 (sur IE en général donc ?) ça freeze dès le début. Ca freeze tellement que même le bouton n'est pas relaché ! Donc pas le côté progression que j'aime tant.
Je sais, je ne suis pas raisonnable. IE6, VB6 et Jean Paul 6 c'est du passé. C'est pourtant une réalité en 2011 dans ma boîte (avec windows 2000, arg).
Merci aux généreux bienfaiteurs.
Pac
|
|
vendredi 2 septembre 2011 à 13:27:26 |
Re : Modif innerHTML d'un div entre 2 XMLHttpRequest synchrones sous IE

dvwyns
|
Salut,
Je ne sais plus dans quel cas innerHtml ne fonctionne pas sous IE, mais je pense que le problème vient de là.
Essaie l'équivalent jquery
Code Javascript :
Tu peux télécharger la librairie jquery ici
Je te concède qu'ajouter cette librairie augmentera le poids de ta page, mais en tout cas en premier lieu ça te permettra de voir si le problème vient de là.
Cordialement
|
|
vendredi 2 septembre 2011 à 13:54:34 |
Re : Modif innerHTML d'un div entre 2 XMLHttpRequest synchrones sous IE

pacadebord
|
Je pense qu'innerHTML fonctionne puisqu'à la fin du traitement, j'obtiens pareil que sous Firefox : mes cases à cocher ont été remplacées. Cela dit me mettre à jquery serait peut-être une bonne chose.
Pac
|
|
vendredi 2 septembre 2011 à 16:41:15 |
Re : Modif innerHTML d'un div entre 2 XMLHttpRequest synchrones sous IE

Zobibol
|
bien le bonjour, il n'est pas évident de tester comme ça, mais il semblerait que ce soit d'un point de vue gestion de la requête qu'il y ait une erreur:
j'aurais plus aborder le problème comme ceci:
Code Javascript :
function getXhr(){
var xhr=null;
if(window.XMLHttpRequest)
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e1){
xhr = null;
}
}
}
else {
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
}
return xhr;
}
function lance(){
var montbl = document.getElementById("idtabclt");
var montblbody = montbl.getElementsByTagName("tbody")[0];
for (var i=0; i < montblbody.rows.length; i++){
var refcpt = montblbody.rows[i].cells[1].innerHTML
if (montblbody.rows[i].cells[6].getElementsByTagName('input')[0].checked){
document.getElementById("ge" + refcpt).innerHTML = "<img border='0' src='images/ajax-loader.gif'>";
envoi_cg1("cgi/clo/cgi_retsouf_clo.exe?act=clo&cpt=" + refcpt + "&typ=ge" + "&uid=" + Math.random(), "ge" + refcpt);
}
if(montblbody.rows[i].cells[7].getElementsByTagName('input')[0].checked){
document.getElementById("av" + refcpt).innerHTML = "<img border='0' src='images/ajax-loader.gif'>";
envoi_cg1("cgi/clo/cgi_retsouf_clo.exe?act=clo&cpt=" + refcpt + "&typ=av" + "&uid=" + Math.random(), "av" + refcpt);
}
}
}
function envoi_cg1(url, monid){
var xhr1 = getXhr()
document.getElementById(monid).innerHTML = "<img border='0' src='images/ajax-loader.gif'>";
xhr1.open("GET", url, false);
xhr1.send(null);
xhr1.onreadystatechange= function (ev){
// tout d'abord on ne s'intérresse qu'à la réponse ok.
if (xhr1.readyState == 4){
if(xhr1.status == 200){
if (xhr1.responseText.toLowerCase() == "true"){
document.getElementById(monid).innerHTML = "<img border='0' src='images/true.gif'>";
}
else {
document.getElementById(monid).innerHTML = "<img border='0' src='images/false.gif'>";
}
}
}
}
}
function envoi_cgi2(url, monid){
var xhr2 = getXhr()
document.getElementById(monid).innerHTML = "<img border='0' src='images/ajax-loader.gif'>";
xhr2.open("GET", url, false);
xhr2.send(null);
xhr2.onreadystatechange= function (ev){
// tout d'abord on ne s'intérresse qu'à la réponse ok.
if (xhr2.readyState == 4){
if(xhr2.status == 200){
if (xhr2.responseText.toLowerCase() == "true"){
document.getElementById(monid).innerHTML = "<img border='0' src='images/true.gif'>";
}
else {
document.getElementById(monid).innerHTML = "<img border='0' src='images/false.gif'>";
}
}
}
}
}
l'utilisation de onreadystatechange change probablement la donne. Et est plus en conformité (je pense avec IE... pas tester donc... pas certain que cela résolve le problème, en outre, c'est le traitement qu'il faut faire.).
[o-_-o]
|
|
lundi 5 septembre 2011 à 15:21:03 |
Re : Modif innerHTML d'un div entre 2 XMLHttpRequest synchrones sous IE

pacadebord
|
Salut Zobibol,
Merci pour ta réponse, hélas le script ne passe même plus dans le bloc onreadystatechange, ni avec FF6 ni avec IE.
Pac
|
|
lundi 5 septembre 2011 à 15:36:24 |
Re : Modif innerHTML d'un div entre 2 XMLHttpRequest synchrones sous IE

pacadebord
|
Mais readyState == 4 et status == 200 quand la requête synchrone est terminée
Pac
|
|
lundi 19 décembre 2011 à 11:59:36 |
Re : Modif innerHTML d'un div entre 2 XMLHttpRequest synchrones sous IE

pacadebord
|
Réponse acceptée !
Bonjour à tous,
Je reviens sur la question après quelque temps. Comme l'a dit Zobibol, ma gestion du onreadystatechange n'était pas terrible. J'ai enfin trouvé la réponse à l'aide de la technique du CALLBACK !
Pac
|
|
Cette discussion est classée dans : document, getelementbyid, innerhtml, monid, if
Répondre à ce message
Sujets en rapport avec ce message
Barre de progression Javascript [ par AurelR ]
BonjourActuellement j'essaye d'envoyer un fichier sur mon serveur (sa j'y arrive) mais j'aimerais afficher une barre de progression.En cherchant un pe
Encore des erreurs ! [ par nicomilville ]
Salut,Et oui, c'est encore moi, vous devez vous dire que je suis un nul, c'est peut être vrai, lol J'ai encore des erreurs sur mon code... Si ça co
ouvrir/fermer une div et fusionner deux fonctions...help [ par ornorme ]
bonjour à celui qui essaira de résoudre mon pti problème!(c'est ma deuxième question sur ce forum..en éspérant que la solution
récupération de données SQL dans une infobulle [ par creaDB ]
Bonjour tout le monde, voilà je débute avec l'infoBulle Javascript et je cherche à y inclure un résultat de requete php/mysql. Je m'explique, je souha
défilement images effet fondu, ne marque que sur FIREFOX [ par fulltrip ]
Bonjour,Comme il est explicité ci-dessus je n'arrive pas à faire marcher mon script JAVASCRIPT sur IE.Si quelqu'un peut voir ou se situe le problème j
Accés à une page via user et mot de passe avec ajax et php [ par developvbdebut ]
BonsoirVoici mon problème.Au départ je suis sur la page index.html, en saissant le bon nom utilisateur et le mot de page, je veux acceder à la page su
Probleme avec IE et Opera [ par SuperChouquette ]
Bonjour, je suis débutant et je tente de faire un script qui permette d'effectuer une recherche dans une liste, celui- ci fonctionne parfaitement sous
probleme controle de saisie avec du javascript dans un formulaire html.php [ par suethi75 ]
BonjourJe controle les champs obligatoires dans mon formulaire cependant cela ne marche pas.Voici mon code javascript: function verifForm(){ if (docu
document.body vs document.write [ par arnaultp ]
Bonjour à tous!Je n'arrive toujours pas très bien à comprendre ce que font document.body et document.write.Cela fait seulement 2 semaines que je code
Probleme avec IE [ par theopil ]
Voila sous firefox sa marche niquel , mes pas sous IE , et j tourne en rond et je ne trouve pas l'erreurfunction affi
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|