Partage
  • Partager sur Facebook
  • Partager sur Twitter

accents et XMLHttprequest

Sujet résolu
    27 octobre 2008 à 3:27:33

    Bonjour !
    Dans ma base de donnée j'ai des champs avec des caractères accentués ou des apostrophes.
    Le fichier appelé par mon javascript est un xml généré en php
    comment faire pour envoyer dans ma requête xhr.open des variables contenant des accents ou des apostrophes ?
    function actualise_nb_trajets() 
    {
    	var xml_nb_trajets = null ;
    	var xhr = getXMLHttpRequest();
    
    	xhr.onreadystatechange = function() 
    	{ 
                    if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
    				{ 
    					affiche(xhr.responseXML);				
    				}
    
        }
    	var station = document.formulaire_recherche.station.options[document.formulaire_recherche.station.selectedIndex].value;
    	var periode = document.formulaire_recherche.periode.options[document.formulaire_recherche.periode.selectedIndex].value;
    	xhr.open("GET", "compte_trajets.php?&station=" + station + "&periode=" + periode + "", true);
    	xhr.send(null);
    }
    

    ça c'est mon script javascript d'appel

    station et periode peuvent contenir des apostrophes ou des accents.
    Merci de votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      27 octobre 2008 à 4:39:43

      Hello jadus,

      L'objet xhr travaille par défaut en utf-8, d'où tes erreurs d'encodage ;)
      Il te suffit d'ajouter cette directive en haut de ton fichier php (avant tout envoi de donnée), pour forcer un encodage en iso :
      header('Content-Type: text/html; charset=ISO-8859-15');
      

      :magicien:
      • Partager sur Facebook
      • Partager sur Twitter
        27 octobre 2008 à 13:48:48

        ouais sauf que chez moi ça ne marchait pas, jusqu'à que j'apprend que mon redirectionneur d'adresse me réencodait tout! Alors j'ai forcé mon serveur charset ISO
        • Partager sur Facebook
        • Partager sur Twitter
          27 octobre 2008 à 19:32:28

          Je te conseille d'encoder tes données avant de les transmettre comme ça à une URL.

          function actualise_nb_trajets() 
          {
          	var xml_nb_trajets = null ;
          	var xhr = getXMLHttpRequest();
          
          	xhr.onreadystatechange = function() 
          	{ 
                          if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
          				{ 
          					affiche(xhr.responseXML);				
          				}
          
              }
          	var station = document.formulaire_recherche.station.options[document.formulaire_recherche.station.selectedIndex].value;
          	var periode = document.formulaire_recherche.periode.options[document.formulaire_recherche.periode.selectedIndex].value;
          	station = escape(station);
          	periode = escape(periode);
          	xhr.open("GET", "compte_trajets.php?&station=" + station + "&periode=" + periode + "", true);
          	xhr.send(null);
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
            28 octobre 2008 à 9:51:23

            Moi j'ai fait un truc comme ça:

            function encode_utf8( s )
            {
              return unescape( encodeURIComponent( s ) );
            }
            
            function decode_utf8( s )
            {
              return decodeURIComponent( escape( s ) );
            }
            

            =/
            J'avais un problème parce que le serveur PHP est config en utf8... même en affichant la page en utf8 je sais pas pourquoi il y avait un bug...
            Enfin bref le bidouillage fonctionne, après si les solution précédentes fonctionnent... Aucun intérêt.
            • Partager sur Facebook
            • Partager sur Twitter
              7 novembre 2008 à 22:12:08

              Merci, je vais essayer tout ça.
              Ca devrait résoudre le problème d'apostrophes aussi ?
              • Partager sur Facebook
              • Partager sur Twitter
                7 novembre 2008 à 22:19:02

                les apostrophes, en php tu peut rajouter des \ devant (le js marche pareil) avec addslashes ou ché plus koi...

                <?php
                $nouvelle_variable = addslashes($ancienne_variable);
                ?>
                
                • Partager sur Facebook
                • Partager sur Twitter
                  7 novembre 2008 à 23:49:44

                  bon, j'ai fait un mix de tout ça et ça a l'air de marcher.
                  merci à vous.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  accents et XMLHttprequest

                  × 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