Visualizzazione dei risultati da 1 a 7 su 7

Discussione: JSON is not defined

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    25

    JSON is not defined

    ciao a tutti,

    ho un piccolo problemino strano...dal momento che sono piu' o meno nuovo su javascript, sto cercando di trasformare una struttura JSON valida in una stringa del tipo "1:Malpensa;2:Fiumicino;...".
    Ebbene, inizio con il parsing dopo aver caricato la libreria json2.js (HttpFox dice che l'ha presa) da questo pezzetto di codice:

    if(http_offerte.readyState == 4 && http_offerte.status==200)
    {
    var newScript = document.createElement('script');
    newScript.setAttribute("type", "text/javascript");
    newScript.setAttribute("src", "http://localhost/..../json2.js");
    document.getElementsByTagName('head')[0].appendChild(newScript);
    var myObject = JSON.parse(http_offerte.responseText);
    }

    e mi ritorna "JSON is not defined"... avete un suggerimento del perche'?....

    Ed inoltre, secondo voi, dopo che ho letto della stringify che il secondo parametro puo' essere una funzione oppure un'espressione regolare...e suppongo essa puo' essere mirata per fare una trasformazione come si vuole...secondo voi come dovrei implementare questo secondo parametro in una funzione per ottenere il risultato stringa come indicato prima?...

    Grazie a tutti in anticipo...
    Ciao,
    Luigi

  2. #2
    Per la prima domanda... prova ad importare lo script in maniera statica (con <script type... insomma) e vedi se ti da errore. Se te lo da ancora, può essere un errore di sintassi (JS è case sensitive, potrebbe essere quello), altrimenti, mi se che il tuo script per importazione non funzica...

    Per la seconda domanda, beh, mi spieghi come faccio a saperlo se non mi dici che parser stai usando??
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    25
    ciao artorius,

    ho provato a metterlo statico nel file di partenza con un tag <SCRIPT> e ora non dà più quell'errore...per il stringify il parser che uso io è il json2.js preso da http://www.json.org/js.html....hai un suggerimento?...

    Grazie,
    Ciao, Luigi

  4. #4
    Beh, importalo all'apertura della pagina...

    Per la tua seconda domanda, tu puoi passargli una funzione come secondo parametro, il parser, dopo aver preparato l'oggetto, lo scorre ricorsivamente e chiama la funzione che gli passi per ogni copia chiave, valore dell'oggetto, passando la chiave come primo parametro e il valore come secondo, poi sostituisce il valore con quello che la funzione gli passa.
    I DON'T Double Click!

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    25
    Oddio...mi sono già perso...

    Cioè se ho una struttura JSON valida di questo tipo:

    {"aeroporti": [{"id":1,"description":"Milano Malpensa (MXP)"},{"id":2,"description":"Roma Fiumicino (FCO)"}],"citta": [{"id":1,"c_name":"Milano"}],"continenti": [{"id":1,"c_name":"Europa"}],"stati": [{"id":1,"c_name":"Italia"}],"tipiofferte": [{"id":1,"description":"All Inclusive"}]}

    e devo ottenere separatamente delle stringhe diverse, una per aeroporti, una per citta, una per continenti, una per stati e una per tipiofferte, copia chiave e valore cosa dovrebbero essere per arrivare ad ottenere:

    "1:Milano Malpensa (MXP);2:Roma Fiumicino (FCO)"
    "1:Milano"
    "1:Europa"
    "1:Italia"
    "1:All Inclusive"

    cioe' la copia chiave sarebbe "aeroporti" e il valore sarebbe "id" per ritornarmi 1 e così via?....

    Ciao,
    Luigi

  6. #6
    no, beh, JSON utilizza sia dizionari (array nominali) che liste (array con indice numerico), cambiando la notazione:

    dizionari :
    {
    "chiave" : "valore",
    "chiave1" : "valore1"
    }

    liste :
    [
    "Valore 1",
    "Valore 2",
    ]

    Nel tuo caso se vuoi ottenere quei dati ti conviene metterli in un ciclo, anziché usare la funzione del parser:

    codice:
    var strJSON; //Metti che qui hai la stringa da trasformare col parser
    var obj = JSON.parse(strJSON);
    //Per accedere ad una valore del dizionario fai obj.chiave
    //Ti assicuri che esista e sia un array
    if(obj.aeroporti && obj.aeroporti.length)
    {
       for(i = 0; i < obj.aeroporti.length; i++)
       {
          var id = obj.aeroporti[i].id;
          var description = obj.aeroporti[i].description;
          //Per ogni iterazione avrai i valori che ti servono, così li puoi processare
       }
    }
    I DON'T Double Click!

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    25
    Grazie, artorius, ho seguito il tuo suggerimento e funziona! :-)

    E devo anche dire che queste JSON sono veramente molto utili, forse persino piu' di una struttura XML...

    E dato che siamo prossimi alle festività, auguri!

    Ciao!
    Luigi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.