Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requette Ajax sur Cookie ne fonctionne pas dans IE

Sujet résolu
    9 avril 2009 à 19:29:47

    Alors je vais tenter de m'expliquer clairement (Pour une fois :-° )
    J'utilise une requête Ajax pour mettre à jour les donnée d'un cookie dans un div, jusque là rien de bien sorcier...
    J'envoie les données vers un fichier qui traite la demande, met le cookie à jour, et revoie les valeur en texte.
    Avec FireFox, Opera, GChrome et Safari ça fonctionne tres bien... Mais IE ne veut rien savoir, je ne peut pas envoyer deux fois la même donnée (via le m^ bouton?).
    Le Cookie garde les données déjà enregistré, ne se met pas à jour et l'affichage Bug ?

    peut être que ce sera plus claire avec l'extrait de code :

    Page affichée :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Page test</title>
    <script type="text/javascript" language="javascript">
    
        function makeRequest(url) {
    
            var httpRequest = false;
    
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                httpRequest = new XMLHttpRequest();
                if (httpRequest.overrideMimeType) {
                    httpRequest.overrideMimeType('text/xml');
                    // Voir la note ci-dessous à propos de cette ligne
                }
            }
            else if (window.ActiveXObject) { // IE
                try {
                    httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e) {
                    try {
                        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) {}
                }
            }
    
            if (!httpRequest) {
                alert('Impossible de créer une instance XMLHTTP');
                return false;
            }
            httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
            httpRequest.open('GET', url, true);
            httpRequest.send(null);
    
        }
    
        function alertContents(httpRequest) {
    
            if (httpRequest.readyState == 4) {
                if (httpRequest.status == 200) {
                    document.getElementById("mondiv").innerHTML = httpRequest.responseText;
                } else {
                    alert('Un problème est survenu avec la requête.');
                }
            }
    
        }
    </script>
    </head>
    <body>
    
    <div id="mondiv"></div>
    
    <input type="button" value="setcookie" onclick="makeRequest('callback.php?val=set')" />
    <input type="button" value="Valeur1" onclick="makeRequest('callback.php?val=Valeur1')" />
    <input type="button" value="Valeur2" onclick="makeRequest('callback.php?val=Valeur2')" />
    
    </body>
    </html>
    


    Page callback.php :

    <?php
    //INSERTION DE LA VALEUR DANS LE COOKIE
    if(isset($_REQUEST['val'])){
    	if(isset($_COOKIE['monCook'])){
    		$contenu = $_COOKIE['monCook'].'#'.$_REQUEST['val'];
    	}else{
    		$contenu = $_REQUEST['val'];
    	}
    //MISE A JOUR DU COOKIE
    setcookie('monCook',$contenu,(time()+3600));
    }
    
    //LECTURE DU COOKIE
    if(isset($_COOKIE['monCook']) && strrpos($_COOKIE['monCook'], '#') != ''){
    	$tab = explode('#',$_COOKIE['monCook']);
    	echo implode('<br>',$tab);
    }elseif(isset($_COOKIE['monCook'])){
    	echo $_COOKIE['monCook'];
    }
    ?>
    


    ps: dans ce code, le premier clic n'affiche rien (normale je pense :euh: )
    Config serveur de test :
    XP Pro SP3
    WAMP :
    PHP Version 5.2.5
    Apache Version 2.2.8
    • Partager sur Facebook
    • Partager sur Twitter
      9 avril 2009 à 20:26:45

      Question stupide...
      Tu sais que tu peux avoir accès aux COOKIES en javascript ?
      Et que si tu y fais en PHP pour plus de "sécurité", bah ça sécurise rien du tout... les COOKIES sont de toute façon modifiables... et c'est pas en passant par PHP que tu peux cacher leurs noms... :-°

      • Partager sur Facebook
      • Partager sur Twitter
        9 avril 2009 à 21:03:57

        J'ai synthétiser le code pour cerner le problème.
        J'utilise un traitement php car le cookie n'est pas le seul paramètre de ce traitement, je passe par des class "cookie" et "sql" pour le résultat.
        Mais c'est bien ce problème qui fait que je n'aurait bientôt plus de cheveux :lol:

        Dede
        • Partager sur Facebook
        • Partager sur Twitter
          9 avril 2009 à 21:09:04

          Sa te dirait pas d'edit ton premier post, et remplacer les citations par des balises code?
          • Partager sur Facebook
          • Partager sur Twitter
            9 avril 2009 à 22:39:05

            Image utilisateur
            Si t'as d'autres trucs que des COOKIES, c'est qu'on a pas tout le code... comment veux-tu qu'on te réponde correctement avec des morceaux ?
            Image utilisateur
            • Partager sur Facebook
            • Partager sur Twitter
              10 avril 2009 à 9:21:14

              Citation : Tiller


              Sa te dirait pas d'edit ton premier post, et remplacer les citations par des balises


              Ca c'est fait :) . Désolé, je n'ai pas l'habitude de poster, plutôt de lire :D

              Citation : xavierm02


              Tu sais que tu peux avoir accès aux COOKIES en javascript ?
              Et que si tu y fais en PHP pour plus de "sécurité", bah ça sécurise rien du tout... les COOKIES sont de toute façon modifiables... et c'est pas en passant par PHP que tu peux cacher leurs noms... :-°


              Alors je n'ai pas poser le code brut comme ça sans avoir chercher un minimum ;) et le problème est bien dans ce code, le reste fonctionne bien o_O

              J'ai l'impression que IE garde en mémoire (dans son cache peut être ?) la dernière requête, du coup il est impossible de cliquer 2X sur le même bouton :euh:
              • Partager sur Facebook
              • Partager sur Twitter
                10 avril 2009 à 9:25:58

                httpRequest.open('GET', url+'&pif='+Math.random(), true);
                
                • Partager sur Facebook
                • Partager sur Twitter
                  10 avril 2009 à 10:22:40


                  Citation : xavierm02


                  httpRequest.open('GET', url+'&pif='+Math.random(), true);



                  Alors là je ne voit pas ce que ça vient faire là ?
                  Je pense que ça doit être de ma faute, je ne suis pas assez clair.... :euh:

                  • Chaque bouton à une valeur donnée donc je ne peut pas mettre de random.
                  • Il doit etre possible d'ajouter 2x la même valeur
                  • le cookie serat editer "ValX"#"Valx"#...etc
                  • les resultat devrait etre split ('#',moncook)...


                  Et le problème ne se pose que sur IE car les autres navigateurs (CF 1er POST)donne bien le bon résultat...
                  :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 avril 2009 à 10:32:08

                    Bah IE considère que tu affiches toujours la même page... donc on passe une variable inutile aléatoire pour lui faire penser le contraire...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 avril 2009 à 11:06:35

                      Je doit avouer que ton premier poste "math.random()" m'a laissé... :(
                      Mais avec une ligne d'explication en plus tu a complètement raison !! ;)

                      Merci pour cette solution, elle me convient très bien :magicien:
                      C'est souvent ce que l'on à sous le nez que l'on ne voit pas.
                      je n'aurais jamais chercher une solution aussi évidente ...


                      Merci encore :D:D
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Requette Ajax sur Cookie ne fonctionne pas dans IE

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown