IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] refresh ajax IE8


Sujet :

AJAX

  1. #1
    Membre expérimenté Avatar de ZnhaarX
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Par défaut [AJAX] refresh ajax IE8
    Salut tout le monde,

    Bon voilà j'expose mon problème car j'ai beau cherché et tenter moult choses, je n'arrive pas à fixer la chose.
    Donc globalement, je fais un requête ajax permettant de mettre à jour deux DIV toutes les demi-secondes.

    Au niveau du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    function getXMLHttpRequest() {
    	var xhr = null;
    	if (window.XMLHttpRequest){
    		xhr = new XMLHttpRequest(); 
    		alert("XMLHttpRequest");
    	}else if(window.ActiveXObject){
    			alert("ActiveXObject");
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    	}
    	alert(xhr);
    	return xhr;
    }
     
    function rafraichir() {
    	var xhr = getXMLHttpRequest();
    	var param = (objectKey == null) ? '' : '?objectKey=' + objectKey;
    	xhr.open('GET', 'info.jsp' + param, true);
    	xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4) {
    			if (xhr.status == 200) {
    				document.getElementById("page").innerHTML = 
    					xhr.responseText.substring(
    							xhr.responseText.indexOf('<!-- start.list -->'),xhr.responseText.indexOf('<!-- end.list -->')
    					);
    				document.getElementById("details").innerHTML = 
    					xhr.responseText.substring(
    							xhr.responseText.indexOf('<!-- start.details -->'),xhr.responseText.indexOf('<!-- end.details -->')
    					);
    				setTimeout(rafraichir, 500);
    			}
    		}
    	};
    	xhr.send();
    }
    Le fait est que tout ceci fonctionne parfaitement sous les différents navigateurs web sauf sur IE (comme par hasard le navigateur utilisé principalement par l'entreprise et les clients bref...).

    Le plus bizarre ici, c'est que mon timer fonctionne bien sous IE, j'ai bien un alert() qui pop toute les demi-secondes, mais le problème c'est que rien n'est actualisé. Donc à première vue, je ne vois pas pourquoi ça viendrait du XHR.
    J'ai l'impression que mon get prend l'ancienne version de la page en fait (et non la nouvelle) ce qui fait que le contenu ne change pas...

    Une petite idée?
    Merci d'avance.

    ZnhaarX.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    J'ai l'impression que mon get prend l'ancienne version de la page en fait
    La réponse est dans la : Pourquoi mon xhr ne se met pas à jour (problème de cache) ?

    Sinon, objectKey, il vient d'où ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre expérimenté Avatar de ZnhaarX
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Par défaut
    Merci pour la réponse rapide

    Alors j'ai déjà testé le "no-cache" mais sans succès.
    En ce qui concerne l'objectKey je ne pense pas que ce soit réellement pertinent.
    Mais je vais expliquer:

    Globalement, j'ai une liste d'élements qui s'actualise toute les demi-secondes.
    Je clique sur un de ces éléments, pour afficher les détails dans un autre div (plus bas). Sauf que pour mémoriser le choix de l'utilisateur (après actualisation), la seule solution qui m'est venue à l'esprit c'est de faire passer l'objectKey dans la méthode GET pour que le serveur puisse le mémoriser.
    Donc ce n'est pas vraiment le soucis ici, qui plus est qu'il est à null tant que l'utilisateur n'a pas sélectionné un élément.


    Sinon pour en revenir au problème, je suis sceptique.
    Par exemple sous IE8, je viens d'ajouter un autre élément à la liste (ça ne s'est pas actualisé), mais lorsque que j'ai sélectionné un élément (quelconque) là la requête a bien fonctionné et ça m'a actualisé ma liste.
    Donc à première vue on pourrait dire, "c'est ton timer qui ne fonctionne pas!". Mais le problème c'est que quand je mets des alert(), il y a bien une fenêtre qui pop toutes les demi-secondes...
    Je suis dans le flouw

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonsoir,
    Citation Envoyé par ZnhaarX
    Par exemple sous IE8, je viens d'ajouter un autre élément à la liste (ça ne s'est pas actualisé), mais lorsque que j'ai sélectionné un élément (quelconque) là la requête a bien fonctionné et ça m'a actualisé ma liste.
    j'ai rencontré en son temps un problème similaire sur le tri des options d'un select qui sous IE ne se rafraîchissait pas.
    La seule solution que j'avais trouvé, était de mettre un oSelect.focus() en fin de code pour forcer le rafraîchissement

Discussions similaires

  1. Ajax refresh d'une div
    Par lelapinrusse dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 29/03/2008, 22h15
  2. [AJAX] refresh d'une div
    Par lelapinrusse dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 28/03/2008, 14h47
  3. [Prototype] Refresh Ajax Php
    Par ccsuperstar dans le forum Bibliothèques & Frameworks
    Réponses: 13
    Dernier message: 17/03/2008, 09h38
  4. [AJAX] Refresh après une modification inline
    Par CarteR_28500 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/10/2007, 09h54
  5. [AJAX]Refresh d'un élément
    Par Shadow69 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/02/2006, 18h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo