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 :

Récupérer tableau Json en javascript


Sujet :

JavaScript

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Par défaut Récupérer tableau Json en javascript
    niveau:novice;

    Bonjour à tous et à toutes, j'ai des difficultés à récupérer ma liste en format Json dans mon fichier.js, notamment utiliser une variable me permettant de remplir ma combobox en Javascript/JQuery. Mon projet étant sous MVC. Idées, orientations et aide seraient les bienvenues merci.


    //Mon routeur
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php 
    require 'AutoRequire.php';
    $routeur=new Routeur();
    $routeur->routerRequete();
    ?>

    //Controleur "famille"
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    class ControleurFamille{
    	private $famille;
    	public function __construct(){
    		$this->famille= new DAOFamille();
    	}
    	public function controle(){
    		$listeFamille=json_encode($this->famille->getAllFamilles());
    		$vue= new vue("Famille");
    		$vue->generer(array('listeFamille'=>$listeFamille));
    	}
    }
    ?>

    // DAO "Famille"
    Code php : 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
    require_once 'SqlConnect.php';
    class DAOFamille {
        private $pdo;
        function __construct() {
            $sql = new SqlConnect();
            $this -> pdo = $sql ->getConnexion();
        }
        public function getAllFamilles() {
            // Préparation de la requête
            $result = $this-> pdo ->prepare ('SELECT * FROM dbo.Famille');
            // Exécution de la requête
            $result -> execute();
            while ($r = $result->fetch()) {
                $retour[] = dataToFamille($r);
            }
            return $retour;
        }
    }
    function dataToFamille($r) {
        $couleur= new DAOCouleur();
        $type=new DAOType();
        $resultat= new Famille();
        $resultat->_setIdFamille($r["ID_FAMILLE"]);
        $resultat->_setNomFamille($r["NOM_FAMILLE"]);
        $resultat->_setMargeFamille($r["MARGE"]);
        $resultat->_setTauxTVAFamille($r["TAUX_TVA"]);
        $resultat->_setListeCouleurFamille($couleur->getCouleursbyFamille($resultat));
        $resultat->_setListeTypeFamille($type->getTypesByFamille($resultat));
        return $resultat;
    }
    ?>

    //Vue "Famille"
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $this->titre = "Bonne Chope";
    $data = json_decode($listeFamille);
    $this->script = '<script src="vue/JS/Vuefamille.js" type="text/javascript"></script>';
    ?>

    //fichier .js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(document).ready(function() {
    //????????????????
    });

  2. #2
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Il y a deux solutions possibles, la plus simple serait de passer ta variable PHP à un Script JS dans ta vue avant ton appel à ton autre script:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $this->titre = "Bonne Chope";
    $data = json_decode($listeFamille);
    ?>
    <script type="text/javascript">
    var data = <?= $data ?>
    </script>
    <?php
    $this->script = '<script src="vue/JS/Vuefamille.js" type="text/javascript"></script>';
    ?>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(document).ready(function() {
    console.log(data)
    });
    C'est vrai que ce n'est pas terrible, la deuxième solution est plus longue mais je la préfère, il s'agit tout simplement de créer un système de service, en gros une page PHP que tu attaquerais en AJAX afin de récupérer les données qui t'intéresses.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Par défaut
    Merci pour ta réponse. J'ai essayer ta solution, j'ai message d'erreur sous chrome, en gros la variable data n'est définie dans le code Php...

  4. #4
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $data = json_decode($listeFamille);
    ?>
    <script type="text/javascript">
    var data = <?php echo $data ?>
    </script>

    Logiquement avec ce qui est fourni la ta variable $data est défini.

    Maintenant si tu as une erreur côté JS peut être essaye en déclarant window.var = <?php echo $data ?>, il doit s'agir d'un problème de portée de variable, à regarder de ce côté donc.

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Heu non... pas vraiment.

    json_decode() retourne un objet PHP, tu ne peux pas l'affecter à une valeur JavaScript. C'est json_encode() qu'il faut utiliser.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    ça viens de me sauter aux yeux j'avais fait une contraction visuelle je pense, mais effectivement étourderie de ma part, pour passer une variable PHP à JS il faut utiliser json_encode

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Par défaut
    Bonjour voici comment je procède pour faire ce genre de traitement :
    Ici on cherche part exemple à lire les articles d'une catégorie dans la BDD.
    Par jquery on fait appel à une fonction PHP ( function Recup_old_article($categorie){....}).

    coté js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //appel a la fonction php pour lire les articles de la BDD
    $.post('Recup_article.php',{function:'Recup_old_article',data:{categorie:categorie}},function(donnees){
    	if(donnees.NB != 0){
    		if(donnees.NB > 0){
                        .....
    		}				
            }
            else 
    		$('option', '#Article_old').remove(); 
    },"json");

    coté PHP :

    Code php : 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
    24
    25
    26
    27
    //Cette ligne appellera la fonction donnée en paramètre "function" dans ton POST côté JavaScript et passe en paramètre, l'ensemble des données contenues dans l'attribut data
    call_user_func_array($_POST["function"], $_POST["data"]);
    function Recup_old_article($categorie){
    	$i=0;
    	$res = array();
    	//Vérifie que la connexion est ok
    	if ($mysqli->connect_errno) {
    		echo "Echec lors de la connexion à MySQL : (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    	}
    	else{//Ajoute le devis
    		$query= "SELECT * FROM `Article` WHERE `Categorie` LIKE '$categorie' ORDER BY `Categorie` ASC";
    		if($result = $mysqli->query($query) ){
    			while($row = $result->fetch_array()){
    				$res["id"][$i]= $row['ID'];
    				$res["res"][$i] = $row['Contenue'];
    				$res["Titre"][$i] = $row['Titre'];
    				$res["Date"][$i] = $row['Date'];
    				$res["Categorie"][$i] = $row['Categorie'];
    				$i++;
    			}
    			$res['NB']= $result->num_rows;
    			echo json_encode($res);
    		}
    		else 
    			echo 0;
    	}
    }

    En espérant t'avoir aidé.

  8. #8
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205

Discussions similaires

  1. Retourner un tableau d'objet avec json vers javascript
    Par beegees dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/04/2013, 20h20
  2. Réponses: 1
    Dernier message: 06/03/2013, 22h52
  3. [PHP-JS] Récupérer mon tableau PHP en JavaScript
    Par yohann26 dans le forum Langage
    Réponses: 7
    Dernier message: 21/11/2011, 18h21
  4. Récupérer tableau php vers javascript
    Par Paulo62 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/07/2011, 11h23
  5. Récupérer tableau php->javascript <select>
    Par Borowsky dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 17/06/2008, 16h33

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