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 :

[Flexbox / JSON] caractères accentués - les accents


Sujet :

jQuery

  1. #1
    Invité
    Invité(e)
    Par défaut [Flexbox / JSON] caractères accentués - les accents
    Bonjour

    J'ai un soucis avec l'utilisation de Flexbox.
    Celui-ci génère bien le "select", mais lorsque je cherche à faire fonctionner l'auto-complétion ou bien à afficher la liste des "option", j'ai droit à cette erreur :

    Invalid JSON property {name} found when trying to apply resultTemplate or paging.summaryTemplate.
    Please check your spelling and try again.
    De plus, à chaque clic sur la flèche de mon "select", le script refait un appel de ma page PHP (qui s'occupe de récupérer les infos dans la BDD et d'envoyer le tout en JSON).


    Voici les bouts de codes concernés :
    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
    function autoComplete(id, type) {
        jQuery(id).flexbox('auto_complete.php?q='+type, {
            watermark: 'Saisissez un(e) '+type,
            paging: false,
            method: 'POST'
        });
    };
     
     
    function(event, retour) {
        jQuery("#valid").fade("#valid", "Fichiers ajoutés avec succès", 4000, "slow");
        jQuery.post("form.php", { session: "<?php echo $session; ?>" },
                 function(retour){
                       for(var i=0 ; i<retour.length ; i++) {
                            var id = retour[i].id;
                            jQuery("#formTags").append("<label for='nom_"+id+"'>Nom : </label><br />");
                            jQuery("#formTags").append("<label for='hotel_"+id+"'>Hotel : </label><br />");
                            jQuery("#formTags").append("<input type='text' value='"+retour[i].nom+"' id='nom_"+id+"' name='nom_"+id+"' /><br />");
                            autoComplete("#formTags", "hotel");
                  }
        }, "json");
    }
    Et le script PHP :
    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
    <?php
     
    // q = champ ࡬ister
     
    if( !empty($_GET['q']) ) {
        $dsn = 'mysql:dbname=galerie;host=127.0.0.1';
        $user = 'root';
        $password = '';
     
        $db = new PDO($dsn, $user, $password);
     
        $request = "SELECT id, nom AS name FROM ".$_GET['q'];
     
        /* Rꤵp곡tion de toutes les lignes d'un jeu de r괵ltats */
        $query = $db->prepare($request);
        $query->execute();
        $results = $query->fetchAll(PDO::FETCH_ASSOC);
        $tab = array('results' => $results);
     
        echo json_encode($tab);    
    }
     
    ?>
    Et ce que dis la doc officielle :
    The call to results.aspx is ajax, and should return a JSON string in the format shown below.

    • The "id" property is a string or integer, and is the value submitted when the form is submitted (like the "value" attribute of the html <option> tag)
    • The "name" property is a string or integer, and is the text displayed for each result, and when a result is selected (like the text between the html <option> open and </option> close tags)
    • All of these names and values are configurable to match the format of your JSON data

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {"results":[  
          {"id":1,"name":"Ant"},   
          {"id":2,"name":"Bear"},  
          {...} // more results here..
    ]}
    J'ai fais des recherches sur le net, mais j'ai pas trouvé de solution
    Merci d'avance !



    Edit : mon JSON semble pourtant correct.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {"results":[
         {"id":"17","name":"Occidental Torremolinos"},
         {"id":"28","name":"Bergerac"},
         {...} // more and more
    ]}
    Dernière modification par Invité ; 08/10/2009 à 14h11.

  2. #2
    Invité
    Invité(e)
    Par défaut
    J'ai cerné le problème (après moult tests et une grosse prise de tête), mais je n'ai toujours pas réussi à le résoudre.

    Dans mon script PHP (fichier encodé en UTF-8), je récupère les données dans la BDD (champs en UTF-8 aussi).
    Certaines contiennent des accents (hôtel...), et ce sont eux qui semblent poser soucis.

    Lorsque je regarde le résultat JSON avec Firebug, je vois que toutes les chaines qui contiennent un accent sont remplacées par null.
    Et cette valeur pose ensuite problème à Flexbox

    J'ai tenté diverses choses (supression des accents avec une fonction PHP avant l'encodage JSON, encodage UTF-8...), mais rien n'y fait.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Après migration de mes scripts sur notre serveur SVN (jusque là j'étais en local, sur ma machine), il n'y a plus de soucis en ce qui concerne l'encodage. Sauf une troncature de la chaine (surement causée par json_encode) lorsqu'il y a un accent.

    Enfin, ça ne reste pas vraiment gênant pour le moment.

    Bonne journée

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

Discussions similaires

  1. JavaScript & json => caractères accentués
    Par jerem_orga dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/09/2014, 08h40
  2. AJAX + JSON: caractères accentués renvoyant "null"
    Par t3__rrY dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/08/2014, 16h23
  3. Réponses: 12
    Dernier message: 06/02/2009, 13h23
  4. [RegEx] Expression validant un certains caractères dont les accents
    Par moi.mc dans le forum Langage
    Réponses: 13
    Dernier message: 22/12/2007, 15h03
  5. [PostgreSQL] Les caractères accentués ?
    Par yacomor dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/02/2003, 16h30

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