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

jQuery Discussion :

Jquery Cache avec IE et un fichier XML


Sujet :

jQuery

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2006
    Messages : 61
    Points : 39
    Points
    39
    Par défaut Jquery Cache avec IE et un fichier XML
    Bonjour,
    J'ai créer un tchat en Ajax avec Jquery qui marche parfaitement bien tant que le navigateur (IE) ne met pas en cache :

    Vérifier s'il existe une version plus récente des pages enregistrées : A chaque visite de cette page Web
    Si je laisse l'option à :

    Automatique
    Le fichier XML est mis en cache et n'est plus raffraichi.

    J'ai pourtant tout essayé :

    En php j'ai mis sur toutes mes pages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date du passé
    Et dans mon code AJax qui lit le fichier xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var date = new Date();
    var all_sec = date.getTime();
    url: "chat.xml?time="+all_sec+""
    et aussi bien sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    beforeSend: function(xml) {
       xml.setRequestHeader('Cache-Control', 'no-cache');
       xml.setRequestHeader('Pragma', 'no-cache');
    }
    ou on ne sais jamais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    beforeSend: function(xhr) {
       xhr.setRequestHeader('Cache-Control', 'no-cache');
       xhr.setRequestHeader('Pragma', 'no-cache');
    }
    Là je ne sais plus quoi faire mais il doit bien exister une solution non ? je ne peux pas forcer les internautes à passer à firefox ou de changer les options d'IE

    Voici tout mon code 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    /**
     * @author Antoine DAVID
     */
    (function($){
        $.fn.ajaxChat = function(params){
     
            /*var params = $.extend({
                refresh:1
            },params);*/
                var date = new Date();
                var all_sec = date.getTime();
                var chatContainer=$('.chat');
                var chat=chatContainer.find('div');
                //Lecture du fichier XML qui constitue le tchat       
                var lectureMessages = function(){
                    //alert(all_sec);
                    $.ajax({
                        type: "GET",
                        url: "chat.xml?time="+all_sec+"",
                        dataType: "xml",
                        beforeSend: function(xml) {
                            xml.setRequestHeader('Cache-Control', 'no-cache');
                            xml.setRequestHeader('Pragma', 'no-cache');
                        },
                        success:
                            function(xml){
                                chat.html('');
                                $(xml).find('shoutbox').each(  
                                    function(){       
                                        var id = $(this).attr('id');
                                        var date = $(this).find('date').text();
                                        var pseudo = $(this).find('pseudo').text();
                                        var message = $(this).find('message').text();                           
                                        //alert(message);
     
                                        //$('<p id="message_'+id+'"></p>').html('<small>'+date+'</small> '+pseudo+' &gt; <strong>'+message+'</strong>').appendTo('div.chat');
                                        //$('<p id="message_'+id+'"><small>'+date+'</small> '+pseudo+' &gt; <strong>'+message+'</strong></p>').appendTo('div.chat');
     
     
                                        chat.append('<p id="message_'+id+'"><small>'+date+'</small> '+pseudo+' &gt; <strong>'+message+'</strong></p>');
                                        //chat.html( chat.html() + '<p id="message_'+id+'"><small>'+date+'</small> '+pseudo+' &gt; <strong>'+message+'</strong></p>');
                                        document.thequizz.themessage.focus();
                                });
                                //setTimeout(lectureMessages,params.refresh*1000);
                                //setTimeout('lectureMessages()',1000);
                                //setTimeout(lectureMessages.refresh*1000);
                                //refresh:1000;
                            }
                    });
                }
                                $.timer({name:"Lecture", interval: 1}, function() {                                                   
                                  lectureMessages();
                                });
                lectureMessages();
        }
    })(jQuery)
    et le code qui appelle la fonction :

    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
     
    <div id="myChat">
            <div class="chat">
                <div></div>
            </div>
            <div class="online_member">
                <span class="buddy16"><img src="img/icones/robot.jpg" width="16" height="16" alt="'+pseudo+'" /><a href="#" onMouseOver="montre('vert', 'Robot', 'Trip Avenue', '100', 'Samedi 04 Avril 2009 18h00', 'robot.jpg');" onMouseOut="cache();"><span class="vert"><?php echo ANIMATEUR;?></span></a></span><br />
                <div></div>
            </div>
            <form method="post" class="writeInput" name="thequizz">
                <input type="text" value="" name="themessage" maxlength="60" />
            </form> 
        </div>
    <script type="text/javascript">
        $(function(){
            $('#myChat').ajaxChat();
        });
        </script>
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Je ne connais pas le problème, mais une courte recherche sur Google m'a conduit à : http://www.clubic.com/forum/programm...048-page1.html

    Donc sur Firefox et IE6*, ca fonctionne mais malheureusement sous IE7, ca bug car il utilise le cache malgré le setRequestHeader.
    Je ne savais pas mais il suffisait de changer de méthode d'envoi. Contrairement à GET qui utilise le cache, POST ne l'utilise pas. Donc il a suffit que je remplace la ligne httpRequest.open("GET", url, false); par httpRequest.open("POST", url, false); et la problème a été résolu..

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2006
    Messages : 61
    Points : 39
    Points
    39
    Par défaut
    courte recherche, je suis pas tombé dessus moi

    en tout cas je te remercie je vais tester ça et je te dirai si ça résoud mon problème

    ++

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2006
    Messages : 61
    Points : 39
    Points
    39
    Par défaut
    Qui à mis le tag résolu avant même que je ne test ?

    Enfin bref ça marche c'était bien ça plus de probleme de cache avec ie 7 merci

    A +

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

Discussions similaires

  1. [JDOM] Problème avec le parsing du fichier XML
    Par nounouuuuu201186 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 10/02/2012, 14h08
  2. Réponses: 4
    Dernier message: 17/01/2012, 19h01
  3. lecture d'un fichier xml avec jquery
    Par devkoax dans le forum jQuery
    Réponses: 6
    Dernier message: 24/10/2011, 21h15
  4. Alimenter combobox avec un noeud de fichier XML
    Par skunkies dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/03/2009, 11h16
  5. champ d'une table avec comme type un fichier xml
    Par gnagnus dans le forum Oracle
    Réponses: 2
    Dernier message: 05/03/2007, 10h16

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