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 to JS: Eval?


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut JSOn to JS: Eval?
    Quel est le problem dans ce code qui est censé récupéré le json, en faire un objet javascript et en faire un affichage ?

    Code JavaScript : 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
    // Example Objet en json
    var TestlinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]} 
     
    //fonction de construction de SmartLinks
    function TestLink(url_source,title_source,id_source)
    {
    	this.url_source = url_source; //l'url du document source du SmartLinks
    	this.title_source = title_source; // titre du doc source du SmartLinks
    	this.id_source = id_source; //l'id de la source du SmartLinks
    	this.smartlinks_info = new array; //tableau de liens cible avec info sur la zone, la date etc...
     
     
    }
     
    var TestLink = eval('(' + TestlinkJson + ')');
     
    alert(TestLink);

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Example Objet en json
    var TestlinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]}
    Ce code génère déjà un objet...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par FremyCompany
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Example Objet en json
    var TestlinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]}
    Ce code génère déjà un objet...
    certes mais il m'est demandé d'utiliser l'autre structure avant d'afficher

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Bon, pour résumer, ton objet "testJSONLink" c'est déjà la valeur que tu voulais attribuer à testLink

    Il possède déjà les propriétés "id_source", ...

    Pour faire ce que tu veux faire, tu dois transformer en String le tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Example Objet en json
    var TestlinkJson = '{"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]}';
    Mais ca n'a aucun intérêt

    eval est remplacé par le code qu'il recoit donc si tu fais
    c'est parfaitement identique à sauf que ca prend plus de temps...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par FremyCompany
    Bon, pour résumer, ton objet "testJSONLink" c'est déjà la valeur que tu voulais attribuer à testLink

    Il possède déjà les propriétés "id_source", ...

    Pour faire ce que tu veux faire, tu dois transformer en String le tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Example Objet en json
    var TestlinkJson = '{"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]}';
    Mais ca n'a aucun intérêt

    eval est remplacé par le code qu'il recoit donc si tu fais
    c'est parfaitement identique à sauf que ca prend plus de temps...
    Voila ma solution dis moi ce que tu en penses

    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
    // Example Objet en json
    var TestlinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]} 
     
    //fonction de construction de SmartLinks
    // notice we're now using JSON as the init data
    function TestLink(json_init)
    {
    	// init data is used from the init object, e.g. json_init.property
    	this.url_source = json_init.url_source; //l'url du document source du SmartLinks
    	this.title_source = json_init.title_source; // titre du doc source du SmartLinks
    	this.id_source = json_init.id_source; //l'id de la source du SmartLinks
    	// notice Array() -- you need to use the proper constructor 
    	// to actually create an array
    	this.smartlinks_info = new Array(); //tableau de liens cible avec info sur la zone, la date etc...
     
     
    }
     
    // note I changed the name of the instance var to avoid confusion
    var testLinkInstance = new TestLink(TestlinkJson);
     
    // this will alert saying '[Object]' or something similar, 
    // since you are attempting to alert with an entire object
    alert(testLinkInstance.title_source);

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Ca me semble bon

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par FremyCompany
    Ca me semble bon
    seul petit bémol je n'utilise pas la methode eval pour transférer mon json dand mon objet JS ensuite quand je fais des alertes pour voir si l'objet JS final a bien incorporé les données transmises, je n'arrive pas afficher celle qui dans le json etait contenu dans un array!


    ceci ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(testLinkInstance.smartlinks_infos[id_dest]);
    alors que ceci fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(testLinkInstance.url_source);

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    J'ai l'impression que tu réinventes la roue (en l'occurence, JSON)

    Si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var TestlinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]}
    tu peux ensuite utiliser, sans aucune fonction, sans aucun eval :

    = "7315f47dba65515fca60c851d7065bc6"
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TestlinkJson.smartlinks_infos[0].id_dest
    = "75effc69e8c68b389c65c67119463312"

    (NB : Tu as mis un objet dans ton Array, il faut donc le "sélectionner", via "[0]")

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par JulienC
    J'ai l'impression que tu réinventes la roue (en l'occurence, JSON)

    Si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var TestlinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]}
    tu peux ensuite utiliser, sans aucune fonction, sans aucun eval :

    = "7315f47dba65515fca60c851d7065bc6"
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TestlinkJson.smartlinks_infos[0].id_dest
    = "75effc69e8c68b389c65c67119463312"

    (NB : Tu as mis un objet dans ton Array, il faut donc le "sélectionner", via "[0]")
    merci en effet il y a une grande redondance mais je ne fais qu'executer ce qui m'est demandé!

    En fait le json object tel qu'il est explicité dans mon code est simplement là pour tester des affichages Javascript etc...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    J'ai l'impression que tu réinventes la roue (en l'occurence, JSON)

    Un truc que je suis en train de clarifier parce que en effet j'ai l'impression de faire des trucs pas forcément utile pour atteindre mon but...

    je dois coder du JS pour effectuer des traitements sur un objet TestObjet dont les valeurs des atributs proviennent d'une base MySQL et elles arrivent donc via un api php sous forme de text Json...

    je me rend compte que pour créer mon objet JS je n'ai plus besoin de le construire avec une fonction constructeur. J'ai juste à faire un TestObjet = eval( jsontext); l'objet testobjet prend directement la structure qui lui est transmise en Json?

    mais par contre si à ce JS qui recoit les données via JSON je voulais ajouter des methodes particulieres par exemple pour l'affichage... devrais je quand meme utiliser une fonction constructeur avec l'objetjson en parametre par exemple?

  11. #11
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Salut,

    Ok pour évaluer JSON, mais :

    -Ou on est absolument sur des élements qui transitent
    -Ou on vérifie la présence par exemple, tu mots "function" dans le texte reçu.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par Shinuza
    Salut,

    Ok pour évaluer JSON, mais :

    -Ou on est absolument sur des élements qui transitent
    -Ou on vérifie la présence par exemple, tu mots "function" dans le texte reçu.
    c'est une question?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    comment je fais pour afficher l'objet ainsi créé dans un tableau à deux cellules, les 3 pemieres propriétés s'affichanty dans une cellelule, et la e s'affichedans dans une autre cellule

  14. #14
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Citation Envoyé par lekunfry
    c'est une question?
    Non c'est une affirmation, en l'occurence éval est fait sur du contenu sans aucune vérification.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par Shinuza
    Non c'est une affirmation, en l'occurence éval est fait sur du contenu sans aucune vérification.
    ohh ok je comprend now!

  16. #16
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    http://www.json.org/js.html

    En bas de cette page, tu as une mini lib qui permet de tester la présence de code malveillant dans le json. A utilisé sur tu n'es pas sur de la provenance des données.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par Shinuza
    http://www.json.org/js.html

    En bas de cette page, tu as une mini lib qui permet de tester la présence de code malveillant dans le json. A utilisé sur tu n'es pas sur de la provenance des données.
    merci pour ce lien tre stre sutile en effet!

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par JulienC
    J'ai l'impression que tu réinventes la roue (en l'occurence, JSON)

    Si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var TestlinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]}
    tu peux ensuite utiliser, sans aucune fonction, sans aucun eval :

    = "7315f47dba65515fca60c851d7065bc6"
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TestlinkJson.smartlinks_infos[0].id_dest
    = "75effc69e8c68b389c65c67119463312"

    (NB : Tu as mis un objet dans ton Array, il faut donc le "sélectionner", via "[0]")
    le pb c'est que l'objet tel qu'il est dans ce code n'y sera pas en fait je vais récupérer une variable qui contiendra une string json généré par du PHP!

    c'est pour cela qu'à l'origine je fais un eval du bidule et avant de l'affecter à l'objet javascript que je vais réellement manipuler... dans le code en dure on ne verra pas smartlinksjson écrit de façon aussi litéral!

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 174
    Points : 80
    Points
    80
    Par défaut
    Voila ou j'en suis dans ma quete de l'affichage de mon objet 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
    <script type="text/javascript">
    //Muck Up JSON object juste pour voir si notre et notre fonction fonctionne bien!
    var SmartLinklinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0"," dat e":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]};
     
    // La fonction eval crée un objet JS à partir d'un string json qui sera affiché et utilisé pour traitements ultérieurs!
    var SmartLink = eval(SmartLinklinkJson); 
     
    //alert(SmartLink.smartlinks_infos[0].id_dest);
     
    // la fonction d'affichage récupere l'objet smartlinks comme élément du DOM
    function affichage(){
    var afficheur=document.getElementById('Smartlinks'); 
     
    // Création d'un tableau avec toutes les propriétés du SmartLinks
    var Props=new Array('id_source', 'url_source', 'title_source', 'smartlinks_infos')
     
    //Création du Tableau en DOM
    var tableauSL=document.createElement('table')
    var slBody=document.createElement('tbody')
     
    //Boucle qui parcour l'ensemble de l'objet smartlinks afin d'afficher ses propriétés dans le tableau créé
    for (i=0;i<Props.length;i++){
     
    //Création d'un élément TR dans le DOM, correspondant à 1 objet SmartLinks
    var smartlinksline=document.createElement('tr')
     
    //Boucle de remplissage des deux cellules de la TR créée
    for(j=0;j<2;j++){
    var cellule=document.createElement('td')
    cellule.innerHTML=(j==0)?Props[i]:SmartLink[Props[i]];
    smartlinksline.appendChild(cellule)
    }
    slBody.appendChild(smartlinksline)
    }
    tableauSL.appendChild(slBody)
    document.body.appendChild(tableauSL)
    }
    </script>
    </head>
    <body onload="displaySmartLinks()">
    <div id_source='1' url_source='2' title_source='3' smartlinks_infos='4' id='Smartlinks'>
    Le test smartlink en affichage brut et sans complex!
    </div>
    </body>
     
    </html>

    j'arrive pas à comprendre pourquoi je n'arrive pas à obtenir ceci!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <table>
    <tr>
    <td>
    Title_Source <br />
    URL_Source<br />
    </td>
    <td>
    smartlinks_info[0].id_dest <br />
    smartlinks_info[0].url_dest</br />
    </td>
    </tr>
    <table>

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Je crois toujours que tu t'emmêle les pinceaux au niveau du JSON.
    Le format JSON a comme intérêt de pouvoir avec une notation simple enregistrer des infos plus complexes (Objets, tableaux, etc...), ça apparemment, tu gère (le JSON que tu as écrit est bien).
    L'autre intérêt est de pouvoir le traiter aussi simplement en JS à l'aide de eval() (C'est là que les problèmes commencent pour toi ).

    Exemple :
    = JSON

    = String

    Pour passer du string à un objet, utilises eval().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var obj = eval("{'test': 'toto'}");
    obj est maintenant un objet JS. Tu peux utiliser ces attributs, tel obj.test (qui donne 'toto').
    Rien ne t'empêche de lui ajouter des attributs ou des méthodes :
    obj.id = 1234;
    ou
    obj.display = function() { ... }

    Si tu as bien suivi, soit tu utilises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var SmartLink = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0"," dat e":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]};
    soit (notes la présence des guillemets) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Muck Up JSON object juste pour voir si notre et notre fonction fonctionne bien!
    var SmartLinklinkJson = "{'id_source':'7315f47dba65515fca60c851d7065bc6','url_source':'http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830','title_source':'Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News','smartlinks_infos':[{'id_dest':'75effc69e8c68b389c65c67119463312','score':'126','deleted':'0',' dat e':'1164279208','zone_cible':'151','manually_added':'0','url_dest':'http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532','title_dest':'Malaysia calls for \"toilet revolution\" - Yahoo! News'}]}";
     
    // La fonction eval crée un objet JS à partir d'un string json qui sera affiché et utilisé pour traitements ultérieurs!
    var SmartLink = eval(SmartLinklinkJson);
    mais surtout pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Muck Up JSON object juste pour voir si notre et notre fonction fonctionne bien!
    var SmartLinklinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0"," dat e":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]};
     
    // La fonction eval crée un objet JS à partir d'un string json qui sera affiché et utilisé pour traitements ultérieurs!
    var SmartLink = eval(SmartLinklinkJson);
    qui ne donnera absolument rien !

    PS : juste pour info, innerHTML n'est pas conforme aux standards (il "pourrait" poser problèmes sur certains navigateurs, comme Opéra), il vaut mieux utiliser document.createTextNode(). Maintenant, si ce n'est que pour du texte, ça doit passer partout !

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

Discussions similaires

  1. eval de json en retour d'ajax sous IE
    Par Isalyn dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 29/02/2012, 08h21
  2. Condition Eval Json Ajax
    Par fwdavy dans le forum jQuery
    Réponses: 1
    Dernier message: 23/08/2011, 11h36
  3. Réponses: 0
    Dernier message: 09/03/2010, 17h16
  4. validation JSON et eval
    Par highman dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/08/2007, 09h27
  5. [langage] eval
    Par Quaker dans le forum Langage
    Réponses: 5
    Dernier message: 21/07/2004, 17h16

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