Partage
  • Partager sur Facebook
  • Partager sur Twitter

caracteres bloquant les requetes ..

Sujet résolu
    22 novembre 2011 à 1:00:56

    bonjour,
    je possede une base de donnée MySQL.
    lorsque je fait des requetes select via ajax selon certains criteres, si les données recoltées comportent certains caractères comme 'ö' ou '&', ca plante la requete et l'affichage coté naviguateur ne se fait pas.

    en fait l'affichage de responseText, les données sont bien affichées, mais arrivé coté js, ca plante...

    je pense qu il y a un probleme d'encodage entre les 2 parties du code ...
    ma table est en utf8_general_ci, et mes pages php sont en UTF-8

    comment recuperer ces fameux caractères?

    merci pour votre aide
    • Partager sur Facebook
    • Partager sur Twitter
    Souvent la moitié de la réponse se trouve dans une question bien posée.
      22 novembre 2011 à 7:15:01

      Salut,

      Je ne pense pas que cela soit la meilleure solution, mais

      utf8_encode
      http://php.net/manual/fr/function.utf8-encode.php
      devrait faire l'affaire ;)
      • Partager sur Facebook
      • Partager sur Twitter
        22 novembre 2011 à 8:49:45

        en fait, coté php tout fonctionne bien car j'ai mis le retour de la requete ajax dans un 'alert' et tout est correct...

        c'est quand le code javascript suivant se lance :
        nodes = oData.getElementsByTagName('input');
        

        oData etant le retour xml de la requete ajax
        que ca plante.
        je vais poser cette question dans le forum adapté et je viendrai expliquer apres si j' ai la soluce :)
        • Partager sur Facebook
        • Partager sur Twitter
        Souvent la moitié de la réponse se trouve dans une question bien posée.
          22 novembre 2011 à 9:54:27

          A chaque fois qu'il y a un problème d'encodage, quelqu'un propose d'utiliser utf8_encode et utf8_decode pour empirer le problème.

          > coté php tout fonctionne bien car j'ai mis le retour de la requete
          > ajax dans un 'alert' et tout est correct...

          ça ne prouve pas forcément que tout est correct...

          vérifie que ton code php qui traite l'ajax renvoie le header Content-Type correct (avec l'encodage) ; affiche le résultat dans un browser (mets directement l'url du code ajax) et vérifie l'encodage ; vérifie l'encodage de ta page principale, etc.
          • Partager sur Facebook
          • Partager sur Twitter
            22 novembre 2011 à 10:26:34

            merci lord casque noir !
            grace à toi je fais des progres dans la recherche d'erreur lol !

            avec firebug, j'ai recupere le contenu xml de la requete que j'ai enregistré dans un fichier au format xml et je l'aoi lancé dans firefox.

            une grosse erreur a surgit :

            Citation : firefox


            Erreur d'analyse XML : mal formé
            Emplacement : http://localhost/divers/test.xml
            Numéro de ligne 1, Colonne 503 :


            la Colonne 503 tombe pile sur A&P ...

            mon encodage (sur page ajax) est :
            <?php
            	include('commun/php_fonctions.php');
            	session_cache_limiter('private_no_cache');
            	session_start();
            	$bdd = db_connect('localhost','base test','creation','aragorn',array());		// Connection à la BDD sauve trade
            	header("Content-Type: text/xml");
            	echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
            


            et sur la page principale
            <!DOCTYPE html>
            <html>
            	<head>
            		<title>Achat <?php echo $name; ?> !</title>
            		<meta charset = "utf-8" />
            		<link rel="stylesheet" media="screen" type="text/css" title="Design" href="CSS/styleCSS.css" />
            		<script type="text/javascript" src="codes js.js"></script>
            		<script type="text/javascript" src="class/js/O_achat.js"></script>
            	</head>
            


            je n'ai jamais eu de probleme jusqu à maintenant j'ai juste transformé ma page principale en HTML5 (supression du DOCTYPE et des infos ds la balise html et meta) mais je ne pense pas que ca vienne de la :)

            quelles manip sont encore possible dans ce cas ci?

            merci
            • Partager sur Facebook
            • Partager sur Twitter
            Souvent la moitié de la réponse se trouve dans une question bien posée.
              22 novembre 2011 à 11:57:00

              Citation : lamouche42

              la Colonne 503 tombe pile sur A&P ...



              Normal, en xml il faut échapper le "&" (utilise htmlspecialchars sur tout texte que tu balances dedans). Personnellement j'utilise le JSON plutôt que le xml, pour éviter ces petits désagréments...

              Rajoute aussi l'encodage dans le header Content-Type.
              • Partager sur Facebook
              • Partager sur Twitter
                23 novembre 2011 à 8:36:23

                merci lord casque noir, htmlspecialchars a résolu mon problème.
                je connaissait cette fonction mais je ne savait pas que le xml ne supportait pas ces caractères ...

                je n'ai pas trom compris comment tu faisais passer du JSON à XMLHttpRequest... je ne connais que responseXML ou responseText ...

                pour ce qui est du content type il faut un truc dans ce genre la?
                <?php
                    header("Content-Type: text/xml chartset = UTF-8");
                


                j'avoue ne pas trop comprendre l'encodage (je n'ai pas cherché à comprendre encore) car j'ai deja assez à apprendre avec php / js / sql ... mais je pense que ca va devenir obligatoire ...
                • Partager sur Facebook
                • Partager sur Twitter
                Souvent la moitié de la réponse se trouve dans une question bien posée.
                  23 novembre 2011 à 8:48:43

                  header('Content-type: text/xml; charset=UTF-8');

                  pour parser du json en javascript, utilise eval()
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 novembre 2011 à 8:53:20

                    merci :)

                    je me suis replongé dans le tuto de nesquick sur l'ajax et l'encodage des données car j'avais zappé cette partie ...
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Souvent la moitié de la réponse se trouve dans une question bien posée.

                    caracteres bloquant les requetes ..

                    × 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