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 automatique IE


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 26
    Points : 49
    Points
    49
    Par défaut [AJAX] Rafraichissement automatique IE
    Bonjour

    J'ai commencé a écrire un script de chat en AJAX, mais j'ai quelques problèmes avec le rafraichissement automatique sous IE.

    Il marche pourtant correctement sous Firefox.


    La fonction chatTimer() va se rappeller après un certain Timeout (quand j'y pense, c'est pas un peu dégeu une fonction récursive infinie ? ) en affichant le contenu de readmsg.php (qui va lire les messages dans la bdd).

    Voici mon 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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    var check = false;
     
    function getXhr()
    {
    	var xhr = null;
    	if(window.XMLHttpRequest)
    		xhr = new XMLHttpRequest();
    	else if(window.ActiveXObject)
    	{
    		try {
    		xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) {
    		xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	else
    	{
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    		xhr = false;
    	}
    	return xhr;
    }
     
    var xhrRefresh = getXhr();
    var xhrPost = getXhr();
     
    function chatTimer()
    {
    	refresh_chat();
    	setTimeout("chatTimer();",2000);
    }
     
    function send_message()
    {
    	xhrPost.onreadystatechange = function(){
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhrPost.readyState == 4 && xhrPost.status == 200){
    			refresh_chat();
    		}
    	}
    	xhrPost.open("POST","postmsg.php",true);
    	xhrPost.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	nick = document.getElementsByName('nick').item(0).value;
    	mess = document.getElementsByName('mess').item(0).value;
    	xhrPost.send("nick="+nick+"&mess="+mess);
    }
     
    function refresh_chat()
    {
    	xhrRefresh.onreadystatechange = function(){
    		if(xhrRefresh.readyState == 4 && xhrRefresh.status == 200){
    			document.getElementById('chat_content').innerHTML = xhrRefresh.responseText;
    		}
    	}
    	xhrRefresh.open("GET","readmsg.php",true);
    	xhrRefresh.send(null);
    }
     
    if(!check)
    {
    	check = true;
    	chatTimer();
    }
    Merci pour vos idées.

  2. #2
    Membre régulier Avatar de SpecialCharacter
    Inscrit en
    Mai 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 73
    Points : 72
    Points
    72
    Par défaut
    Bonjour,

    Certains navigateurs, notamment I.E mais aussi Opéra sauvegarde la XMLHttpRequest.responseText dans le cache, ce qui ne rend l'affichage dynamique qu'une seule fois.

    Pour y remédier les headers dans le fichier qu'on doit GET doivent comporter CacheControl = "no-cache" AddHeader "Pragma", "no-cache Expires = -1

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/03/2008, 13h46
  2. ajax,rafraichissement avec une liste deroulante
    Par klimero dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/04/2006, 09h41
  3. Rafraichissement automatique d'un texte
    Par TheoOrl45 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/03/2006, 13h30
  4. [Tableaux] rafraichissement automatique d'une page
    Par Copps dans le forum Langage
    Réponses: 5
    Dernier message: 10/11/2005, 09h02
  5. [firefox] Problème de rafraichissement automatique
    Par barok dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 01/09/2005, 10h54

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