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 :

Lire dans un JavaScript un objet PHP parsé json_encode($return)


Sujet :

jQuery

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut Lire dans un JavaScript un objet PHP parsé json_encode($return)
    Bonjour à tous,

    J'ai beau chercher, je ne trouve pas de solution à mon problème de lecture d'une variable envoyée par PHP encodée json.

    Voici le code dans sqlConnect.js qui appelle sqlConnect.php,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function jsConnect()
    {	$.ajax(
    	{	type: "POST",
    		url: "sqlConnect.php",
    		dataType: "text",
    		success: function(dataSQL, statut)
    		{	alert ("success " + dataSQL);
    		},
    		error: function(dataSQL, statut)
    		{	alert ("error " + dataSQL );
    		}
    	});
    }
    et mon code dans sqlConnect.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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     <?php
    //PDO / php_pdo / php_pdo_mysql / Data Objects / class pdo
     
    //header('Content-Type: application/json; charset=utf-8');
     
     
    $host = "monHost";
    $dbname = "maDB";	
    $dsn = "mysql:host=". $host.";dbname=".$dbname;
    $username = 'monUser';
    $password = 'monPw';
     
    /*Soit dans le constructeur lors de l'instanciation de l'object de connexion => oCnx
    soit après l'instanciation de objet connexion oCnx avec methode setAttribute => $oCnx->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION);*/
     
    $options = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
    );
     
    $selQry = "SELECT * FROM `participant` LIMIT 0 , 30"; 
    $delQry = "DELETE FROM `participant`";
    $insQry = "INSERT INTO `participant` (`idparticipant`, `password`, `firstname`, `name`) VALUES (NULL, 'pw1', 'moi', 'moi')";
    try
    {   $oCnx = new PDO($dsn, $username, $password, $options);
    	$rowCount = $oCnx->exec($insQry);
    	$oQry = $oCnx->query($selQry);
    	$rows = $oQry->fetchAll();
    } 
    catch (PDOException $e)
    {	$name =  "Erreur !: " . $e->getMessage() ;
    	die();
    }
     
    $oCnx= null;// Fermeture connexion !
    echo json_encode($rows);
    ?>

    Mais voilà je ne sais pas comment accéder aux données en retour depuis sqlConnect.php via echo json_encode($rows)

    Actuellement mon dataType = 'text' dans $.ajax({....}), mon alert(dataSQL) pour success: function(dataSQL){...} me renvoie les données sous ce format

    [{"idparticipant":3,"password":"pw1","firstname":"moi","name":"moi"},{"idparticipant":4,"password":"pw1","firstname":"moi","name":"moi"},{"idparticipant":11,"password":"pw1","firstname":"moi","name":"moi"},{"idparticipant":12,"password":"pw1","firstname":"moi","name":"moi"}]
    Et c'est déjà super

    Mais quand je passe $.ajax({...dataType = 'json'}) j'ai en retour:
    [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
    Ma question est super simple mais je me détruis les yeux à chercher la solution pour récupérer les données reçues dans sqlConnect.js depuis sqlConnect.php afin de les traiter et les intégrer plus tard dans un grid jQuery.

    D'ailleurs si quelqu'un connait un grid JQuery, je suis preneur.

    Merci à tous

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Bonjour,

    Comme l'indique les règles de la section, merci de ne pas mettre de code serveur sur ce forum. Nous on s'intéresse uniquement à ce qui sort à l'autre bout du tuyau, côté client.

    Aussi, si ta question repose sur jQuery, ce topic aurait davantage sa place dans la section jQuery

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Bonjour SylvainPV

    Mais justement le problème est de lire dans le fichier JS la variable reçue depuis PHP.

    Le code PHP est pour comprendre le contexte !

    Donc je réitère ma question comment lire dans le fichier sqlConnect.js je la variable de retour parsée json_encode du sqlConnect.php.

    Merci à tous!!!!!

  4. #4
    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
    Je pense que tu dois utiliser une ancienne version de jQuery qui, si je me souviens bien, parsait uniquement le premier niveau.
    Sinon, pourquoi n'utilises-tu pas .getJSON() plutôt ?
    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

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ou un dataType JSON ?
    le retour serait alors directement un JSON exploitable ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Bonjour Bovino et SpaceFrog,

    Toute la question est là !!!!

    Si dans sqlConnect.js, je passe dataType = 'json' alors comment récupérer la valeur d'un champ d'un enregistrement dans la variable de réception dataSQL.

    Je n'arrive pas à trouver la méthode pour rechercher dans une variable encodée json, la valeur des champs!

    C'est surement super basique , mais ma question est vraiment de connaitre la méthode (code ) pour récupérer en JavaScript, la valeur des champs pour chaque enregistrement de dataSQL qui reçoit un format encodé json !!!

    Je ne sais plus si je suis encore très clair

    Encore merci pour votre aide

  7. #7
    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
    De façon tout ce qu'il y a de plus classique...
    A noter que tu reçois une réponse sous forme de tableau, donc tu dois préciser l'indice auquel tu veux accéder puis la propriété liée à cet indice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(dataSQL[0].idparticipant);
    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

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Que pensez-vous de l'article d'Alexandre Clain qui préconise d'abandonner json (ici) en raison de:

    • La Sécurité des données confidentielles (same origin policy)
    • Des Erreurs silencieuses (<= données dynamiques)
    • De l'Usage des données dans d’autre programmes

  9. #9
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    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
    24
    25
    26
    var jqXHR = $.getJSON( "sqlConnect.php" );
    
    jqXHR.done( function( data, textStatus, jqXHR ){
    	// succès de la transaction, on doit traiter le contenu de data
    	console.log( data, textStatus, jqXHR );
    	
    	// EDIT ici data est un objet JS au format JSON :oops:
            // comme le montre l'exemple ci-dessous qui est exact
            // ici data est un array d'objet JS au format JSON
    
    	// exemple
    	var idParticipant = data[ 2 ][ "idparticipant" ];
    						
    });
    
    jqXHR.fail( function( jqXHR, textStatus, errorThrown ){
    	// échec de la transaction, gérer la catastrophe
    	console.log( jqXHR, textStatus, errorThrown );
    							
    });
    
    jqXHR.always( function( jqXHR, textStatus ){
    	// la transaction est terminée
    	console.log( jqXHR, textStatus );
    	
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    json a encore un bel avenir devant lui
    il ne faut bien entendu pas demander de la sécurité, mais le souci ne provient pas du format de transmission, xml ou csv sont tout aussi vulnérables.
    On peut toujours ajouter une couche de chiffrement dédié.
    Il faut juste savoir qu'avec le net les données sont accessibles.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Merci Bovino pour la ligne de code mais avec :

    dataType = 'json'
    et l'alerte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert (console.log(dataSQL[0].idparticipant));
    j'ai l'erreur
    undefined

    alors qu'avec dataType = 'text', alert (dataSQL) renvoie le message suivant:

    [{"idparticipant":3,"password":"pw1","firstname":"moi","name":"moi"},{"idparticipant":32,"password":"pw1","firstname":"moi","name":"moi"}]
    Le format renvoyé est bien un format json puisque validé sur http://jsonlint.com/

    Je désespère

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Super danielhagnoul,

    C'est bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     variable[indice][ "nomChamp" ]
    pour accéder à la valeur d'un champ d'un enregistrement !!!

    Et encore merci à tous pour votre aide

  13. #13
    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
    Puisque variable[indice] est un objet, il n'y a aucune différence entre variable[indice][ "nomChamp" ] et variable[indice].nomChamp.

    En revanche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert (console.log(dataSQL[0].idparticipant));
    n'a pas beaucoup de sens... soit tu fais un alert(), soit un console.log(), mais pas les deux !
    Comme un console.log() renvoie par défaut undefined, tu ne risques pas de voir grand chose avec alert (console.log());...
    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

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Bovino,

    Encore merci pour ton aide sur ce post et aussi pour les nombreux autres

    J'espère ne pas souler avec mes posts basiques car je sais que je n'en ai pas fini avec mes questions

    Une nouvelle fois, merci à tous pour vos conseils et solutions

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/04/2014, 23h29
  2. Réponses: 1
    Dernier message: 08/12/2010, 15h45
  3. Appel fonction php dans code javascript
    Par licorne dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/03/2008, 10h55
  4. [PHP-JS] variable php dans du javascript ?????
    Par lipczynski dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 18/08/2005, 14h26
  5. [PHP-JS] Execution d'un script php dans du javascript
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/06/2005, 20h41

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