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 :

JSON chaines vers objet JSON


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut JSON chaines vers objet JSON
    Bonjour a tous
    Donc voilà, j utilise la librairie JQUERY et notamment la fonction getJSON, pour donc envoyer une requette a un script php et recevoir une reponse JSON... Mon probleme est que la fonction getJSON demande du JSOn en parametre... Bon ok j m attelle a la tache ^^
    J arrive a produire une chaine JSON valide (d après http://www.jsonlint.com/), d ailleurs voila cette chaine :
    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
    {
        "id_courses": [
            {
                "id": "1"
            },
            {
                "id": "3"
            },
            {
                "id": "4"
            },
            {
                "id": "5"
            }
        ],
        "id_skills": [
            {
                "id": "8"
            },
            {
                "id": "9"
            }
        ],
        "course_or_and": "OR"
    }
    Bien sur si j essaye de passer cette chaine telle qu elle dans la fonction getJSON ca ne fonctionne pas (normal puisque c est une chaine)

    Du coup, je passe par eval, et la si j ai bien compris, il envoie un un objet JSON

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var params = eval('(' + paramsjson + ')');
    Donc je passe tout ca dans ma fonction getJSON, j'envoie tout ca dans mon fichier php qui affiche la variable $_GET, et aui me renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Array
    (
        [id_courses] => [object Object]
        [id_skills] => [object Object]
        [course_or_and] => OR
    )
    Pourtant dans mon code Javascript console.log(params.id_skills[0].id); est bien defini...

    Et la je vois pas... Evaluer id_skills et id_courses avant de les envoyer ? Ca devrait pas arranger le business, et en plus ca fonctionne pas...

    Je vois vraiment pas la donc si quelqu un a une idée... En plus JSON est pas énormement documenté sur le net... (Ou les differentes pages sont toutes des copies collers, hum)

    Merci d avance !

  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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var params = eval('"' + paramsjson + '"');

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Hum non, ca ne semble plus fonctionner du tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	var params = eval('"' + paramsjson + '"');
    	console.log(params);
    console.log n affiche rien...
    Mais pourquoi le changement de ( a " ?

    Perso j ai deja pas trop compris le pourquoi des deux parentheses alors... ^^
    Mais merci quand même !

  4. #4
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    ha ben non tu as raison c'est bien avec des ()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var strjson="{coucou:'bonjour'}"
    var json=eval('('+strjson+')')
    alert(json.coucou)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Probleme pas vraiment résolu mais ca m a permis de comprendre l erreur que je faisans dans ma première methode... (ici http://www.developpez.net/forums/d82...ete-undefined/)

  6. #6
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par LaLoutre Voir le message
    Mon probleme est que la fonction getJSON demande du JSOn en parametre... Bien sur si j essaye de passer cette chaine telle qu elle dans la fonction getJSON ca ne fonctionne pas (normal puisque c est une chaine)
    Du coup, je passe par eval, et la si j ai bien compris, il envoie un un objet JSON
    Attention je pense que tu te mélanges :
    JSON n'est pas un type d'objet, c'est une "syntaxe de serialisation d'objets" (JavaScript Object Notation).

    Je ne connais pas bien jQuery, mais le parametre demandé "en JSON" est en fait un objet qui contient les parametres à envoyer dans ta requete HTTP, exactement comme ci tu soumettais un formulaire.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // le champ nommé "foo" a la valeur "bar"
    // le champ nommé "toto" a la valeur "jambon"
    $.getJSON("test.php", { foo: "bar", toto: "jambon" }, function(json){
    //
    });
    Cet objet ne peut pas avoir une complexité telle que celle que tu veux : il ne peut s'agir que de clé/valeur, ou valeur ne peut pas être un objet (.. sauf un tableau de valeurs ... je pense).
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // le champ nommé "val1" a la valeur "la valeur 1"
    // le champ nommé "val2" a la valeur "la valeur 2"
    // 5 champ nommés "val3" (des checkbox cochées par exemple) ont pour valeurs l'une "1", une autre "2" etc...
    {val1:"la valeur 1", val2: "La valeur 2", val3: [1,2,3,4,5,6]}
    Dans ton cas, tu devrais essayer sans passer par un objet pour tes ids:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
        id_courses: ["1","3","4","5"],
        id_skills: ["8","9"],
        "course_or_and": "OR"
    }

  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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    A noter qu'ajax ne sait qu'envoyer et recevoir des strings ...
    il faut evaluer de chaque coté ..

Discussions similaires

  1. [POO] Objet json , comment instancier un nouvel objet ?
    Par le_chomeur dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 29/10/2008, 10h19
  2. retourner objet Json via ajax ? hmm
    Par Myfred dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 25/06/2008, 11h06
  3. [POO] Restaurer un objet JSon en javascript
    Par GandalfZeGrey dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 21/01/2008, 15h14
  4. [POO] lecture objet json
    Par taouja dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/12/2007, 11h32
  5. évaluation d'une chaine au format JSON
    Par ridan dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/03/2007, 16h17

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