Ich habe eine dynamisch generierte Seite, auf der ich ein statisches JavaScript verwenden und ihm 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 die JSON-Zeichenfolge 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 verwenden. Ich weiß nicht, ob es am besten ist, es mit oder ohne jQuery zu machen.
$(function() {
// read JSON
alert("the json is:")
})
javascript
json
script-tag
Jonas
quelle
quelle
<script>
Element, das SRC definiert hat, nichts anderes als neue Zeilen und / oder Kommentare enthalten. Siehe "Ein Skriptelement mit einem src-Attribut darf nur Folgendes enthalten" im obigen Link. Andernfalls wird sich der HTML-Validator beschweren.<script src="jquery-1.6.2.min.js"></script>
dort.Am Ende hatte ich diesen JavaScript-Code, um unabhängig von jQuery zu sein.
var json = document.getElementsByTagName('script'); var myObject = JSON.parse(json[json.length-1].textContent);
quelle
document.getElementById
? Auf diese Weise müssen Sie nicht daran denken, es zuletzt zu behalten. Auch wer in Zukunft die Seite ändert, wird dies nicht tun.JSON im
<script id="myJSON">
Gebrauch lesenvar 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 wie zu verweisen
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>
quelle
<script id="myJSON">
Tag benötigt auch dastype="application/json"
Attribut.JSON.parse($('script[src="mysript.js"]').html());
oder erfinden Sie eine andere Methode, um das Skript zu identifizieren.
Vielleicht anstelle von
.html()
dir brauchen.text()
. Nicht sicher. Probieren Sie beide aus.quelle
{"org": 10, "items":["one","two"]}
<script>
Tag das hatsrc
, darf es überhaupt keinen Inhalt haben.