wake-up-neo.com

Wie kann ich eine JSON im Script-Tag von JavaScript aus lesen?

Ich habe eine dynamisch generierte Seite, auf der ich ein statisches JavaScript verwenden und eine JSON-Zeichenfolge als Parameter übergeben möchte. Ich habe diesen Ansatz von Google gesehen (siehe Googles + 1-Schaltfläche: Wie machen sie das? ).

Aber wie soll ich den JSON-String aus dem JavaScript lesen?

<html>
  <head>
    <script src="jquery-1.6.2.min.js"></script>
    <script src="myscript.js">{"org": 10, "items":["one","two"]}</script>
  </head>
  <body>
    Hello
  </body>
</html>

In diesem JavaScript möchte ich das JSON-Argument {"org": 10, "items":["one","two"]} aus dem HTML-Dokument. Ich weiß nicht, ob es am besten ist, es mit oder ohne jQuery zu machen.

$(function() {
    // read JSON

    alert("the json is:")
})
69
Jonas

Ich würde die Skript-Deklaration folgendermaßen ändern:

<script id="data" type="application/json">{"org": 10, "items":["one","two"]}</script>

Notentyp und ID-Felder. Nachdem

var data = JSON.parse(document.getElementById('data').innerHTML);

wird gut funktionieren in allen Browsern.

Das type="application/json" wird benötigt, um zu verhindern, dass der Browser ihn beim Laden analysiert.

134
c-smile

Am Ende war dieser JavaScript-Code von jQuery unabhängig.

var json = document.getElementsByTagName('script');
var myObject = JSON.parse(json[json.length-1].textContent);
13
Jonas

So lesen Sie JSON in <script id="myJSON"> verwenden

var manifest= document.getElementById('myJSON').innerHTML; //sets manifest to the text in #myJSON
manifest= JSON.parse(manifest) //Converts text into JSON

Sie können auch Methoden verwenden, um auf das Skript zu verweisen, z. B. document.scripts[0]

    //var manifest= JSON.parse(document.getElementById('myJSON').innerHTML); /*Shortend of 2&3*/
var manifest= document.getElementById('myJSON').innerHTML; //Gets text in #myJSON
manifest= JSON.parse(manifest) //Converts it into JSON
document.getElementById('test').innerHTML= manifest.name+ '<br/>'+ manifest.otherOptions; //Displays it
console.log('manifest')
console.log(manifest);
<head>
<script type="application/json" id="myJSON">
  {"name":"Web Starter Kit", "otherOptions":"directly here"}
</script>
</head>
<body>
<p id="test"></p>
</body>
2
Zekrom_Vale
JSON.parse($('script[src="mysript.js"]').html());

oder eine andere Methode erfinden, um das Skript zu identifizieren.

Möglicherweise benötigen Sie anstelle von .html().text(). Nicht sicher. Probieren Sie beide aus.

1
Emil Ivanov