Come posso aprire un file JSON JavaScript, senza jQuery?

Sto scrivendo un po ‘ di codice in JavaScript. In questo codice ho voglia di leggere un file json. Questo file verrà caricato da un URL.

Come posso ottenere il contenuto di questo file JSON in un oggetto in JavaScript?

Questo è per esempio il mio file JSON trova a ../json/main.json:

{"mainStore":[{vehicle:'1',description:'nothing to say'},{vehicle:'2',description:'nothing to say'},{vehicle:'3',description:'nothing to say'}]}

e voglio usare il mio table.js file come questo:

for (var i in mainStore)
{       
    document.write('<tr class="columnHeaders">');
    document.write('<td >'+ mainStore[i]['vehicle'] + '</td>');
    document.write('<td >'+ mainStore[i]['description'] + '</td>');
    document.write('</tr>');
} 
  • Ho capito che “la lettura di un file json” si intende effettuare la richiesta all’url che restituisce il contenuto json. Se è così, allora si può illustri perché non si desidera utilizzare jQuery per che? Si ha $.ajax funzione che è perfettamente adatto per questo.
  • ehi Michal, che è quello che voglio fare sì. Perché io non voglio usare jQuery è perché la persona con cui sto lavorando per non la vuole perché ha paura della velocità dello script. Non è il mio appello a fare
  • La corretta profilazione vorrei dirti che jQuery non è più lento per quanto riguarda getJSON; tutto quello che sta facendo è per essere duro con se stesso, il guadagno di quasi nulla. Infatti, Stroustrup ha fatto un bel discorso su come codice nativo può anche essere più lento di librerie fatto per te…
  • Convincerlo a usare jQuery e $.getJSON. Sarà risparmiare un sacco di tempo e problemi!
InformationsquelleAutor Rick Weller | 2012-03-23



4 Replies
  1. 43

    Ecco un esempio che non richiede jQuery:

    function loadJSON(path, success, error)
    {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function()
        {
            if (xhr.readyState === XMLHttpRequest.DONE) {
                if (xhr.status === 200) {
                    if (success)
                        success(JSON.parse(xhr.responseText));
                } else {
                    if (error)
                        error(xhr);
                }
            }
        };
        xhr.open("GET", path, true);
        xhr.send();
    }

    Chiamata come:

    loadJSON('my-file.json',
             function(data) { console.log(data); },
             function(xhr) { console.error(xhr); }
    );
    • Penso che hai dimenticato “errore” come terzo parametro per il metodo. E grazie per l’esempio, la userò.
    • grazie per la segnalazione. Cercherò di correggere il codice di esempio.
    • perché xhr.send() necessari su l’ultima riga?
    • send() funzione invia la richiesta, in alternativa con qualsiasi contenuto per il corpo (a seconda del metodo HTTP.)
  2. 1

    XHR può essere utilizzato per aprire i file, ma poi in pratica sei rendendolo duro con te stesso, perché jQuery rende tutto molto più facile per voi. $.getJSON() rende questo così facile da fare. Preferisco desidera chiamare una singola riga di cercare di ottenere un intero blocco di codice di lavoro, ma che sta a voi…

    Perché non voglio usare jQuery è perché la persona con cui sto lavorando per non la vuole perché ha paura della velocità dello script.

    Se lui non può correttamente profilo nativo VS jQuery, egli non dovrebbe nemmeno essere di programmazione in codice nativo.

    Paura, significa che egli non sa quello che sta facendo. Se avete intenzione di andare per le prestazioni, è in realtà bisogno di sapere come vedere come certi pezzi di codice più veloce. Se si sta solo pensando che jQuery è lento, poi si cammina in cattive strade…

    • Forse sta parlando evitando i 100ms ci vorrà per ottenere un cdn copia di jquery, recuperare un file json e poi analizzarlo? Preferisco avere il file json e jquery in parallelo.
    • Ehm no, se dovessi darti un altro sito che fa riferimento a ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js script sarebbe solo per ~3 ms a leggere la cache come si sta leggendo un sito che fa riferimento a script stesso e probabilmente avete visitato bel po ‘ di altri siti web ad esso riferibili, come pure nei giorni scorsi. Che fa parte dello scopo di una CDN… 😉
    • Wijsman anni di ritardo, ma… Perché non ci sono programmi come Adobe che consente l’esecuzione di script per le loro applicazioni e solo javascript può essere utilizzato. Che è un caso in cui si poteva utilizzare jquery.
  3. 0

    JSON è nulla a che fare con jQuery.

    C’è nulla di sbagliato con il codice che hai ora.


    Per memorizzare la variabile mainStore, è una variabile che json.

    Si dovrebbe archivio di json per una variabile:

    var myJSON = {"mainStore":[{vehicle:'1',description:'nothing to say'},{vehicle:'2',description:'nothing to say'},{vehicle:'3',description:'nothing to say'}]};
    
    var mainStore = myJSON.mainStore;
    
    //.. rest of your code.
    • ma come faccio a memorizzare un file esterno che var myJSON? io sono un vero principianti 🙂
    • href=”http://falcon80.com/JSON/JSONandAJAX.html” >falcon80.com/JSON/JSONandAJAX.html
    • Creare un altro file e includere nella tua pagina utilizzando un <script> tag prima che l’altro codice che usi.
    • hehe anche a quello 😛
    • Che e questa risposta sono più improprio uso di JSON, benvenuti nel mondo di testa!
    • Qui si ottiene un buon esempio di come si introduce un overhead che jQuery non si hanno, quindi si finisce con una velocità di soluzione. Tonnellate di persone stanno usando jQuery perché è veloce biblioteca, perché no?
    • io confince l’uso di jquery. E leggere in $.getJSON

  4. 0

    Ho capito che “la lettura di un file json” si intende effettuare la richiesta all’url che restituisce il contenuto json. Se è così, allora si può spiegare perché non si desidera utilizzare jQuery per questo scopo? Si ha $.ajax funzione che è perfettamente adatto per questo e copre il browser differenze.

    Se volete leggere il file, allora devi farlo lato server, ad esempio, php e di fornire in qualche modo al dom (ci sono diversi metodi) in modo js può utilizzare. La lettura di file dal disco con js non è possibile.

Lascia un commento