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 :

Peut-on envoyer un objet Json complexe au serveur ?


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Par défaut Peut-on envoyer un objet Json complexe au serveur ?
    Bonjour à tous, désolé de recréer un topic alors que je viens de poster dans un autre mais je viens de voir que son auteur l'avait passé en Resolu (peu de chance donc d'avoir quelqu'un qui le lise !)

    J'essaie tant bien que mal de faire passer un objet Json avec Jquery vers mon serveur php.

    J'ai donc dans mon fichier javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        	$.getJSON("http://url/test.php",  // le fichier qui recevra la requête
        			{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}, 
        		    function(data){   
        		alert(data.message1);
     
        	}




    Et quand je tente de lire les données sur le serveur voilà ce qui se passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chaine=$_GET['couleur'];
    $reponse['message1'] = $chaine;
    bleu est bien renvoyé dans ce cas, tout va bien

    mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chaine=json_decode($_GET['lapin']);
    $reponse['message1'] = $chaine->tomate;
    null est renvoyé au lieu de farcie.

    Pourtant, si je ne passe plus par javascript, en ecrivant directement la chaine sur le fichier php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $chaine='{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}';
    $toto=json_decode($chaine);
    echo $toto->lapin->tomate;
    la j'ai bien "farcie" qui s'affiche.

    Je suis donc un peu perdu, si quelqu'un pouvait m'aider, merci !

  2. #2
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    c'est plutot un souci php non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $chaine=json_decode('{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}');
     
     echo $chaine->lapin->tomate;
    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 !

  3. #3
    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
    Attention, getJSON signifie que tu t'attends à recevoir un format JSON, certainement pas que tu en envoies !
    Même si tu passes tes paramètres sous forme d'objets JSON, ils sont transformés par jQuery avant l'envoi au serveur :
    Citation Envoyé par Doc jQuery
    Data that is sent to the server is appended to the URL as a query string. If the value of the data parameter is an object (map), it is converted to a string and url-encoded before it is appended to the URL.
    Ceci dit, rien ne t'empêche de créer une chaine correspondant à un format JSON pour l'envoyer au serveur et qu'elle puisse être traitée avec json_decode.
    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

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Par défaut
    Je pense pas, puisque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $chaine=json_decode('{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}');
     
     echo $chaine->lapin->tomate;
    me renvoie bien "farcie"

    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chaine=json_decode($_GET['lapin']);
    $reponse['message1'] = $chaine->tomate;
    me renvoie null

    Jquery n'envoie pas vraiment la bonne chaine !

  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
    Citation Envoyé par drooss
    Jquery n'envoie pas vraiment la bonne chaine !
    Si, telle que spécifiée dans la doc, ce n'est juste pas celle que tu crois
    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 du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Par défaut
    J'avais lu dans un tuto qu'on recevait du Json avec cette methode, mais qu'on envoyait egalement.
    je vais donc essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	$.getJSON("http://192.168.0.44:10590/test.php",  // le fichier qui recevera la requête
        			{"lapin":'{"tomate":"farcie","chocolat":"chaud"}',"couleur":"bleu"}, 
        		    function(data){   
        		alert(data.message1);
        		
        	}
    En esperant que ca fonctionne, merci !

  7. #7
    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 659
    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 659
    Billets dans le blog
    1
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=6;IE=7;IE=8; IE=9"  />
    <script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
     <script type="text/javascript">
        $.get("zzz1.php",  // le fichier qui recevra la requête
        			{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}, 
        		    function(data){   
        		alert(data);
     
        	} )
     </script>
         </head>
     <body>
     
     </body>
    </html>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <?php
     $chaine="";
    echo $_GET['lapin']['tomate'];
     
     
    ?>
    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 !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Par défaut
    Mon essai n'a pas réussi, par contre bravo SpaceFrog ca fonctionne !

    il me semblait pourtant avoir essayé de le lire comme un tableau mais j'ai du mal m y prendre.

    Merci à vous, je suis grandement soulagé !

  9. #9
    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
    J'avais lu dans un tuto qu'on recevait du Json avec cette methode, mais qu'on envoyait egalement.
    Ouais, les concepteurs de jQuery écrivent le contraire dans la doc officielle juste pour te faire une farce pendable

    L'exemple proposé par Spaffy montre bien la réalité de la chose.
    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

  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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    il semblerait que le getJSON n'envoie rien au serveur

    un var_dump de $_REQUEST reste vide ???

    par contre en reception:

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=6;IE=7;IE=8; IE=9"  />
    <script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
     <script type="text/javascript">
        $.getJSON("zzz1.php",  // le fichier qui recevra la requête
        			{"lapin":{"tomate":"farcie","chocolat":"chaud"},"couleur":"bleu"}, 
        		    function(data){   
        		$.each(data, function(key,val){alert(key+"=>"+val)})
     
        	} )
     </script>
         </head>
     <body>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <?php
    echo '{"one":"un"}';
    ?>

    d'ou ma tentative couronnée de succès de passer en get ..
    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 !

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

Discussions similaires

  1. [Dojo] Afficher un objet json complexe dans un datagrid ?
    Par andlio dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 03/01/2012, 19h35
  2. Envoyer un objet JSON du contrôleur à JQuery
    Par vinci.novice dans le forum Spring
    Réponses: 2
    Dernier message: 27/07/2011, 10h36
  3. Peut-on envoyer du json au serveur
    Par arsene555 dans le forum jQuery
    Réponses: 8
    Dernier message: 13/07/2011, 14h56
  4. Envoyer un objet complexe en JSON à un controlleur
    Par mitnick2006 dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 11/03/2011, 10h29
  5. [XML + Email] Peut on envoyer du xml dans un email ?
    Par biboo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 28/07/2004, 11h07

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