2009-11-30 3 views
6

Ich entwickle eine einfache JavaScript (jQuery) Diashow. Ich wollte JSON verwenden, um einige statische Parameter über den Inhalt jeder Folie zu speichern.Eine saubere Lösung für die Verwendung von statischen JSON-Daten

Da ich meine Daten gerne getrennt von meinem Code aufbewahre, gibt es trotzdem JavaScript, um eine .json-Datei auszuwerten?

  • AJAX scheint etwas übertrieben - es muss nur zur Laufzeit ausgewertet werden, nichts ist dynamisch.
  • Ich könnte eine separate JS-Datei haben, die meine JSON-Daten als ein Objekt enthält - aber das scheint chaotisch.
  • Also bevor ich eine der oben genannten Lösungen nutze, wollte ich nur sicherstellen, dass es keine sauberere Möglichkeit gibt, JavaScript eine Textdatei auswerten zu lassen.

    Antwort

    8

    Was ist los mit einer separaten js-Datei für Ihr Objekt? Es muss irgendwo leben. Ich stimme zu, dass Ajax Overkill ist, aber ich weiß nicht, warum Sie ein JavaScript-Objekt in einer JS-Datei für "chaotisch" halten.

    +0

    Einverstanden. In einer JS-Datei gespeichert zu sein, ist ähnlich, es irgendwo anders zu speichern - denken Sie an Konfigurationsdateien oder XML usw. - Nichts ist daran falsch. –

    +0

    In der Tat macht es Ihr Leben weniger unordentlich! –

    +0

    Sie wollen es also nicht in Ihrem Code, durch Code abgerufen oder verlinkt? Das lässt es ziemlich gut in einer versteckten Eingabe, die noch klebriger ist. Ich bin mit diesen Leuten zusammen: ein Externer.js ist die sauberste Option. –

    4

    JSON Auswertung ist sehr einfach:

    var jsonString = "{'name': 'Joe', 'age': 36}"; 
    
    var data = eval('(' + jsonString + ')'); 
    data.name // 'Joe' 
    data.age // 36 
    

    Der einfachste Weg, diese Daten zu speichern ist es in einem <input type="hidden"> zu setzen und es dann document.getElementById('hiddenElementId').value mit lesen.


    Das vollständige Bild:

    HTML

    <input type="hidden" id="hiddenElementId" value="{'name': 'Joe', 'age': 36}" /> 
    

    JS

    function getData() { 
        var jsonString = document.getElementById('hiddenElementId').value; 
        var data = var data = eval('(' + jsonString + ')'); 
        return data; 
    } 
    

    Es ist nicht wirklich notwendig, ein hidden Element zu sein - können Sie es ausdrückte in einem Attribut in einem der Bilder.


    Eine weitere Option ist es in einen <script> Tag unter einem Namen zu bleiben.

    <script type="text/javascript"> 
        var data = {'name': 'Joe', 'age': 36}; 
    </script> 
    

    Auf diese Weise data wird eine globale Variable (etwas, was ich nicht so gerne) und kann von überall genutzt werden. Es ist eine einfache Lösung, aber ein bisschen chaotisch - ich würde mit dem ersten gehen.

    +0

    Um eine JSON-Zeichenfolge auszuwerten, können Sie 'JSON.parse (string)' verwenden, obwohl ich nichts über IE weiß. – fphilipe

    +0

    Für alle Browser können Sie JSON.parse verwenden, wenn Sie die JSON-Bibliothek verwenden. Die meisten Menschen missbilligen die Eval. Neuere Browser haben eine "sichere" Analyse. – Nosredna

    1

    J-Abfrage hat eine JSON-Funktion Parse, die auch in IE funktioniert ..

    $.parseJSON("{'json':'rules for data'}"); 
    

    Genießen ..

    aber nur eine Frage, wie man es ordentlich wie zu machen:

    FUNCTION_HOWTO({json:'test',p2:'part2'}) = { 
        json:'test', 
        p2:'part two' 
    } 
    
    Verwandte Themen