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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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+

+ 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