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

JavaScript Discussion :

[AJAX] Rafraichissement sous IE


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [AJAX] Rafraichissement sous IE
    tout le monde, je suis un petit nouveau sur ce forum.
    J'ai un petit soucis avec IE (tout va bien sous Firefox )
    J'ai résumé mon code au minimum pour bien cerner le probleme.
    Je traite une page php avec de l'ajax, cette page me retourne le timestamp du serveur à intervalles réguliers avec un setInterval. Sous IE je récupère ma variable mais celle-ci reste la même alors que sous firefox, ma variable est réactualisée à chaque appel par le biais de l'ajax (traitement correct ).

    Voici mon appel en js :

    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
     
    function createRequestObject() {
    var xhr = null; 
     
    if(window.XMLHttpRequest) // Firefox et autres
    xhr = new XMLHttpRequest(); 
    else if(window.ActiveXObject){ // Internet Explorer 
    try {
    xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
    else { // XMLHttpRequest non supporté par le navigateur 
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    xhr = false; 
    }
    return xhr;
    }
     
    var http = createRequestObject();
     
    function rafraichir(id,pseudo) {
    var url='include/update.php?id='+id+'&pseudo='+pseudo;
    http.open('get', url,false);
    http.onreadystatechange = handleResponse;
    http.send(null);
    }
    function handleResponse() {
    if(http.readyState == 4){
    var response = http.responseText;
    alert(response);
     
    }
    }
    Pour ce qui est du fichier "update.php", je l'ai réduis de la sorte :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?
    echo time();
    ?>
    Je n'arrive pas a comprendre quel est la différence de traitement entre IE et FF dans ce cas de figure.
    Merci par avance pour vos réponses

  2. #2
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Sylfrid Voir le message
    Je n'arrive pas a comprendre quel est la différence de traitement entre IE et FF dans ce cas de figure.
    Merci par avance pour vos réponses
    C'est un problème de cache du navigateur. Il faut empecher IE de cacher le résultat de la requête.

    La solution propore consiste a gérer les headers HTTP permettant la mise en cache de page (pragme:no-cache, expire:0 etc...0 à l'aide de la commande header de php : http://fr.php.net/header

    Sinon, tu peux utiliser des solutions paliatives, si tu n'as pas envie de traiter les headers correctement. En vrac : soumettre ta requete en POST (pas de cache sur les requetes post), ajouter à ta chaine de requete un paramètre aléatoire (qui empechera le cache de fonctionner),...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour denisC,
    merci de m'avoir répondu.
    Je m'étais penché sur la solution des headers mais sans résultats.
    En effet, je n'avais pas placé l'ensemble complet des headers nécessaire pour éviter la mise en cache . Mon problème est maintenant réglé, un grand merci à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] AJAX rafraichissement sous IE
    Par yodark dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 20/01/2008, 16h32
  2. [AJAX] Rafraichissement sous IE
    Par jmulans dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/04/2007, 11h13
  3. [AJAX] rafraichissement d'un Div en Ajax
    Par Azanael dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/05/2006, 15h06
  4. [AJAX] Rafraichissement des données sur la page
    Par TreizeSegments dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 18h32
  5. ajax,rafraichissement avec une liste deroulante
    Par klimero dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/04/2006, 09h41

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