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

JavaScript Discussion :

[AJAX] Json_encode($data_com) => AJAX


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 151
    Points : 54
    Points
    54
    Par défaut [AJAX] Json_encode($data_com) => AJAX
    Bonjour

    J'ai un code en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $conn_string = "host=*******";
    $dbconn = pg_connect($conn_string);
    $result = pg_query($dbconn, "SELECT insee_comm, insee_depa, nom_commun, ordonnee_c, abscisse_c FROM commune_n");
    echo "var data_com;";
    $data_com = array();
     
    while ($row = pg_fetch_row($result)) {
        $data_com[] = $row[0].";'".$row[1]."';'".$row[2]."';'".$row[3]."|".$row[4]."'";
    }
    echo 'data_com='.json_encode($data_com).';';
    ?>
    Je dois retourne le résultat via ajax. Le nombre de ligne de la requête est très important, je vais donc passé un argument via ajax pour filtrer. Le problême est que je ne vois pas comment retourner le résultat contenu ici dans Json_encode($data_com).

    Merci d'avance pour votre aire

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Ce que tu renvoie semble correct, mais tout dépends comment tu gère ça
    coté ajax, tu as un bout de code javascript à donner ?
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 151
    Points : 54
    Points
    54
    Par défaut
    J'ai un collègue qui m'a trouvé la solution. Du coté php je renvoi echo json_encode($data_com);

    Du coté Html cela donne ceci.

    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
    function lstDeptListener () {
     
            var xhr = getXhr()
            // On défini ce qu'on va faire quand on aura la réponse
            xhr.onreadystatechange = function(){
            // On ne fait quelque chose que si on a tout reçu et que le serveur est                                                                                                                                ok
            if(xhr.readyState == 4 && xhr.status == 200){
                    data_com = eval(xhr.responseText);
                        })
                    }
            }
            // Ici on va voir comment faire du post
            xhr.open("POST","searchgeo.php",true);
            // ne pas oublier ça pour le post
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')                                                                                                                               ;
            var lstDept = Ext.getCmp('lst_Dept');
            var lstDeptResult = lstDept.getValue();
            xhr.send("lstDeptResult="+lstDeptResult);
    };

    Il me reste plus qu'a initialiser ma zone de liste.

    Si vous avez des remarques je suis preneur
    Merci d'avance Tio

  4. #4
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Points : 225
    Points
    225
    Par défaut
    Bonjour,

    Ton code m'a l'air très bien, toutefois, tu aura peut être des problèmes avec ton objet ( data_com ).

    Personnellement, j'ai été obligé de l'écrire de cette façon afin de récupérer un array correct. Mais j'ai utilisé la classe de Zend pour l'encodage, donc tu n'aura peut être pas de problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data_com = eval( '(' + _xmlHttp.responseText + ')' );
    Bonne chance.
    LoveAngel :: Meow( );
    Personne ne remarque ce qui marche trop bien. Procrastination, Terry Pratchett

  5. #5
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 151
    Points : 54
    Points
    54
    Par défaut
    Merci en effet il me manquait cette notion.

    Voila ce que cela donne au final
    coté php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $conn_string = "host=localhost port=5432 dbname=WEBDATA_NORM user=postgres password=postgres";
    $dbconn = pg_connect($conn_string);
    $lstDeptResult = $_POST['lstDeptResult'];
    $result = pg_query($dbconn, "SELECT insee_comm, insee_depa, nom_commun, ordonnee_c || '|' || abscisse_c AS coordonnees FROM commune_n WHERE insee_depa = ".$lstDeptResult);
    $data_com = array();
    while ($row = pg_fetch_array($result)) {$data_com[] = $row;}
    echo json_encode($data_com);
    ?>
    coté HTML
    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
    function lstDeptListener () {
            var xhr = getXhr()
            // On défini ce qu'on va faire quand on aura la réponse
            xhr.onreadystatechange = function(){
            // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
            if(xhr.readyState == 4 && xhr.status == 200){
                    //Ext.getCmp('lst_Com').store.data = eval(xhr.responseText);
                    Ext.getCmp('lst_Com').store.loadData(eval('('+xhr.responseText+')'));}
            }
            // Ici on va voir comment faire du post
            xhr.open("POST","searchgeo.php",true);
            // ne pas oublier ça pour le post
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            var lstDept = Ext.getCmp('lst_Dept');
            var lstDeptResult = lstDept.getValue();
            xhr.send("lstDeptResult="+lstDeptResult);
    };
    Merci de ton aide

    Cordialement

    Sujet Résolu

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

Discussions similaires

  1. [STRUTS][AJAX]Quel framework AJAX avec Struts
    Par woodwai dans le forum Struts 1
    Réponses: 24
    Dernier message: 12/03/2009, 16h19
  2. [AJAX] PHP avec ajax(makerequest)
    Par Benjiijneb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 11/04/2006, 16h53
  3. [AJAX] Modifier avec AJAX une image générée avec GD
    Par thsantac dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/03/2006, 19h34
  4. [AJAX] texte réponse Ajax dans un conteneur div
    Par grinder59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/02/2006, 18h07
  5. [AJAX] Autocomplétion + méthode Ajax
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/10/2005, 16h24

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