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 :

Transmission d'une variable type JSON


Sujet :

jQuery

  1. #1
    Invité
    Invité(e)
    Par défaut Transmission d'une variable type JSON
    Bonjour,

    J'ai un objet conséquent que j'aiemerais transmettre à un script PHP via les fonctionnalités AJAX de JQuery.
    Voic l'objet en question:

    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
    27
    28
    29
    30
    var myObject2 =
    { "Itineraire" :
      [
        { "nom" : "Iti-1",
          "Etapes" :
          [
            { "nom" : "etape-1",
              "Coordonnees":
              [
                    {"lat" : "1", "lng" : "1", "typepoly" : "0"},
                    {"lat" : "2", "lng" : "2", "typepoly" : "0"},
                    {"lat" : "3", "lng" : "3", "typepoly" : "0"},
                    {"lat" : "4", "lng" : "4", "typepoly" : "1"},
                    {"lat" : "5", "lng" : "5", "typepoly" : "0"}
              ]
            },
            { "nom" : "etape-2",
              "Coordonnees":
              [
                    {"lat" : "1", "lng" : "1", "typepoly" : "1"},
                    {"lat" : "2", "lng" : "2", "typepoly" : "1"},
                    {"lat" : "3", "lng" : "3", "typepoly" : "1"},
                    {"lat" : "4", "lng" : "4", "typepoly" : "1"},
                    {"lat" : "5", "lng" : "5", "typepoly" : "0"}
              ]
            }
          ]
        }
      ]
    };
    Et le code JS que j'utilise pour la transmission:
    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
    $(document).ready(function(){
    		$("#bouton").click(function(){
      				$.ajax({
        				   type: "GET",
        				   //dataType: "json",
        				   //processData: false,
        				   url: "php/traitement.php",
        				   data: myObject2,
        				   error: function(msg){ alert( "Error !: " + msg );},
        				   success: function(data){
        				   	//affiche le contenu du fichier dans le conteneur dédié
        				   	//$('#contenu_fichier_ajax').css({display:"none"});
        				   	/*$('#contenu_fichier_ajax').text(data).show("slow");*/
        				   	$('#contenu_fichier_ajax').append(data).show("slow");
        				   	//$('#contenu_fichier_ajax').css({color:"green", display:"block"});
      				}});
    		});
    });
    Voilà ce que j'obtiens avec un print_r sur $_GET dans le script PHP


    Le script PHP tout simple:
    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
    <blockquote>
    <pre>
    <?php
    if (isset($_GET)) {
        echo 'Contenu de $_GET<br />';
        print_r ($_GET);
        echo 'Contenu JSON<br />';
        //print_r (json_decode($_GET[]));
    }
    else {
        echo "Rien re&ccedil;u !!!";
    }
    ?>
    </pre>
    </blockquote>
    Si quelqu'un a une méthode pour passer cet objet et utiliser json_decode coté PHP, il sera le bien venu

    Merci pour vos futures réponses

    Jean-Luc

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    type: "GET",
        				   //dataType: "json",
        				   processData: false,
        				   url: "php/traitement.php",
    J'imagine que oui, mais tu as essayé avec processData à false ?
    Et ce ne serait pas moins problématique en post ?
    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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour Bovino,

    J'ai effectivement essayer avec processData à false, et je ne vois plus rien dans $_GET qui m'a foi n'est pas vide.
    Je vais essayer avec POST.
    Tiens, pour voir l'url du script appelant dan PHP, cela doit-être possible me semble-t-il? Mais je ne m'en souviens plus !!!
    Cela me permettrait de voir les données transmise (http.......?toto=....&tata=...)

    Peut-être trouver une fonction qui sérialise ce type de variable. Le soucis, ceux sont les [ dans la variable.

    Exemple : si ma variable est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var myObject0 = [ "a", [ "b", "c", [ "d0", "d1", "d2", "d3"],],"e", "f", [ "g0", "g1", "g2" ],];
    processData à true
    j'ai:
    Contenu de $_GET
    Array
    (
    [undefined] => undefined
    )

    processData à false
    j'ai:
    Contenu de $_GET
    Array
    (
    [a,b,c,d0,d1,d2,d3,e,f,g0,g1,g2] =>
    )

    C'est pourtant un tableau tout simple.

    Il me faut trouver la fonction qui me sérialise ma variable en une donnée texte conforme

    Je teste avec POST et réponds

    A+

  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
    En GET, le problème est que tu atteins peut-être la limite de taille de l'url...
    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
    Invité
    Invité(e)
    Par défaut
    Je viens d'essayer avec POST => idem

    Voici une autre test
    ma variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var data_json_1 =
    {
    "json":
          "{\"prop_1\": {\"prop_10\" :\"contenu prop_10\", \"prop_11\" :\"contenu prop_11\"},\"prop_2\": \"contenu prop_2\",\"prop_3\": \"contenu prop_3\"}"
    };
    transmise en POST

    Là le retour est correcte et c'est logique j'envoie une chaine de caractère en second argument
    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
    Contenu de $_POST
    Array
    (
        [json] => {"prop_1": {"prop_10" :"contenu prop_10", "prop_11" :"contenu prop_11"},"prop_2": "contenu prop_2","prop_3": "contenu prop_3"}
    )
    Contenu JSON (json_decode)
    Array
    (
        [prop_1] => Array
            (
                [prop_10] => contenu prop_10
                [prop_11] => contenu prop_11
            )
     
        [prop_2] => contenu prop_2
        [prop_3] => contenu prop_3
    )
    C'est donc la sérialisation qui pose problème (et je n'est pas mis de [ dans la variable) D'ailleurs, je m'envais tester...

    A+

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bon, voilà une variable avec des [ et des ] où j'ai transformé le deuxième argument en string (tien, c'est l'été...)

    La variable:
    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
    27
    28
    var myObject2 =
    { "Itineraire" : 
        "{ \"nom\" : \"Iti-1\", "
          +"\"Etapes\" : "
          +"[ "
            +"{ \"nom\" : \"etape-1\", "
              +"\"Coordonnees\": "
              +"[ "
                    +"{\"lat\" : \"1\", \"lng\" : \"1\", \"typepoly\" : \"0\"}, "
                    +"{\"lat\" : \"2\", \"lng\" : \"2\", \"typepoly\" : \"0\"}, "
                    +"{\"lat\" : \"3\", \"lng\" : \"3\", \"typepoly\" : \"0\"}, "
                    +"{\"lat\" : \"4\", \"lng\" : \"4\", \"typepoly\" : \"1\"}, "
                    +"{\"lat\" : \"5\", \"lng\" : \"5\", \"typepoly\" : \"0\"} "
              +"] "
            +"}, "
            +"{ \"nom\" : \"etape-2\", "
              +"\"Coordonnees\": "
              +"[ "
                    +"{\"lat\" : \"1\", \"lng\" : \"1\", \"typepoly\" : \"1\"}, "
                    +"{\"lat\" : \"2\", \"lng\" : \"2\", \"typepoly\" : \"1\"}, "
                    +"{\"lat\" : \"3\", \"lng\" : \"3\", \"typepoly\" : \"1\"}, "
                    +"{\"lat\" : \"4\", \"lng\" : \"4\", \"typepoly\" : \"1\"}, "
                    +"{\"lat\" : \"5\", \"lng\" : \"5\", \"typepoly\" : \"0\"} "
              +"] "
            +"} "
          +"] "
        +"} "
    };

    le résulat correcte que je reçois:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    Contenu de $_POST
    Array
    (
        [Itineraire] => { "nom" : "Iti-1", "Etapes" : [ { "nom" : "etape-1", "Coordonnees": [ {"lat" : "1", "lng" : "1", "typepoly" : "0"}, {"lat" : "2", "lng" : "2", "typepoly" : "0"}, {"lat" : "3", "lng" : "3", "typepoly" : "0"}, {"lat" : "4", "lng" : "4", "typepoly" : "1"}, {"lat" : "5", "lng" : "5", "typepoly" : "0"} ] }, { "nom" : "etape-2", "Coordonnees": [ {"lat" : "1", "lng" : "1", "typepoly" : "1"}, {"lat" : "2", "lng" : "2", "typepoly" : "1"}, {"lat" : "3", "lng" : "3", "typepoly" : "1"}, {"lat" : "4", "lng" : "4", "typepoly" : "1"}, {"lat" : "5", "lng" : "5", "typepoly" : "0"} ] } ] } 
    )
    Contenu JSON (json_decode)
    Array
    (
        [nom] => Iti-1
        [Etapes] => Array
            (
                [0] => Array
                    (
                        [nom] => etape-1
                        [Coordonnees] => Array
                            (
                                [0] => Array
                                    (
                                        [lat] => 1
                                        [lng] => 1
                                        [typepoly] => 0
                                    )
     
                                [1] => Array
                                    (
                                        [lat] => 2
                                        [lng] => 2
                                        [typepoly] => 0
                                    )
     
                                [2] => Array
                                    (
                                        [lat] => 3
                                        [lng] => 3
                                        [typepoly] => 0
                                    )
     
                                [3] => Array
                                    (
                                        [lat] => 4
                                        [lng] => 4
                                        [typepoly] => 1
                                    )
     
                                [4] => Array
                                    (
                                        [lat] => 5
                                        [lng] => 5
                                        [typepoly] => 0
                                    )
     
                            )
     
                    )
     
                [1] => Array
                    (
                        [nom] => etape-2
                        [Coordonnees] => Array
                            (
                                [0] => Array
                                    (
                                        [lat] => 1
                                        [lng] => 1
                                        [typepoly] => 1
                                    )
     
                                [1] => Array
                                    (
                                        [lat] => 2
                                        [lng] => 2
                                        [typepoly] => 1
                                    )
     
                                [2] => Array
                                    (
                                        [lat] => 3
                                        [lng] => 3
                                        [typepoly] => 1
                                    )
     
                                [3] => Array
                                    (
                                        [lat] => 4
                                        [lng] => 4
                                        [typepoly] => 1
                                    )
     
                                [4] => Array
                                    (
                                        [lat] => 5
                                        [lng] => 5
                                        [typepoly] => 0
                                    )
     
                            )
     
                    )
     
            )
     
    )
    Il me faut donc trouver le sérialisateur d'une variable JSON (de toutes la variable), je pense que c'est claire.
    Si tu as des infos, je recherche de mon coté.

    Merci et a+

  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
    J'ai trouvé ce script sur cette page.
    Je pense que ça pourra t'aider.
    Bon courage, A+
    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
    Invité
    Invité(e)
    Par défaut
    Ah, ben justement je suis dessus...
    Je regarde et si ok je réponds et puis résolu

    Merci de ton aide.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bien !

    Le script fonctionne à merveille, il passe le contenu de la variable en texte, je l'envoie vers mon script PHP, je la transforme en un tableau associatif tout beau pour le manipuler après et injecter les infos en base de données.
    Merci pour tes réponses Bovino!

    Il n'y plus qu'à tester le sens inverse...

    Du Bon, du Beau, du Bovino

    Edit pour que ce soit propre
    le JS
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    // transformation de la variable json en varaible text
    var myObject2 =
    { "Itineraire" :
        { "nom" : "Iti-1",
          "Etapes" :
          [
            { "nom" : "etape-1",
              "Coordonnees":
              [
                    {"lat" : 1, "lng" : 1, "typepoly" : 0},
                    {"lat" : 2, "lng" : 2, "typepoly" : 0},
                    {"lat" : 3, "lng" : 3, "typepoly" : 0},
                    {"lat" : 4, "lng" : 4, "typepoly" : 1},
                    {"lat" : 5, "lng" : 5, "typepoly" : 0}
              ]
            },
            { "nom" : "etape-2",
              "Coordonnees":
              [
                    {"lat" : 1, "lng" : 1, "typepoly" : 1},
                    {"lat" : 2, "lng" : 2, "typepoly" : 1},
                    {"lat" : 3, "lng" : 3, "typepoly" : 1},
                    {"lat" : 4, "lng" : 4, "typepoly" : 1},
                    {"lat" : 5, "lng" : 5, "typepoly" : 0}
              ]
            }
          ]
        }
    };
     
    strjson = JSON.stringify(myObject2);
     
    $(document).ready(function(){
    		$("#bouton").click(function(){
      				$.ajax({
        				   type: "POST",
        				   //dataType: "json",
        				   //processData: false,
        				   url: "php/traitement.php",
        				   data: {"json": strjson},
        				   error: function(msg){ alert( "Error !: " + msg );},
        				   success: function(data){
        				   	//affiche le contenu du fichier dans le conteneur dédié
        				   	//$('#contenu_fichier_ajax').css({display:"none"});
        				   	/*$('#contenu_fichier_ajax').text(data).show("slow");*/
        				   	$('#contenu_fichier_ajax').append(data).show("slow");
        				   	//$('#contenu_fichier_ajax').css({color:"green", display:"block"});
      				}});
    		});
    });
    le 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
    <blockquote>
    <pre>
    <?php
    if (isset($_POST)) {
        echo 'Contenu de $_POST<br />';
        print_r ($_POST);
        echo 'Contenu JSON (json_decode)<br />';
        print_r (json_decode($_POST["json"], true));
    }
    else {
        echo "Rien re&ccedil;u !!!";
    }
    ?>
    </pre>
    </blockquote>
    Pour le code de la fonction JSON voir post précédent.
    Dernière modification par Invité ; 18/07/2008 à 15h23.

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 31
    Par défaut
    Chez moi il me faut faire un stripslashes en php (j'envoie via post et pas get) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r (stripslashes(json_decode($_GET[])))

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

Discussions similaires

  1. une variable type long qui recupère une valeur dans un .properties
    Par zouuc dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 27/02/2009, 17h08
  2. Réponses: 2
    Dernier message: 16/06/2008, 11h42
  3. Transmission d'une variable flash à php
    Par AngelFire dans le forum Langage
    Réponses: 4
    Dernier message: 09/02/2008, 08h54
  4. Transmission d'une variable flash à php
    Par AngelFire dans le forum Flash
    Réponses: 1
    Dernier message: 05/02/2008, 14h58
  5. DEBUTANT Lire dans une variable type CString
    Par Hokagge dans le forum MFC
    Réponses: 2
    Dernier message: 01/12/2005, 10h53

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