Mam dynamicznie generowaną stronę, na której chcę użyć statycznego kodu JavaScript i przekazać mu ciąg JSON jako parametr. Widziałem to podejście stosowane przez Google (patrz Przycisk +1 Google: Jak oni to robią? ).
Ale jak mam odczytać ciąg JSON z JavaScript?
<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>
W tym JavaScript chciałbym użyć argumentu JSON {"org": 10, "items":["one","two"]}
z dokumentu HTML. Nie wiem, czy najlepiej to zrobić z jQuery, czy bez.
$(function() {
// read JSON
alert("the json is:")
})
javascript
json
script-tag
Jonas
źródło
źródło
<script>
element, który został zdefiniowany SRC nie zawierają niczego innego niż nowych linii i / lub komentarze. Zobacz „Element skryptu z atrybutem src musi zawierać tylko:” w powyższym linku. W przeciwnym razie walidator HTML będzie narzekał.<script src="jquery-1.6.2.min.js"></script>
tam.Skończyło się na tym, że ten kod JavaScript był niezależny od jQuery.
var jsonElement = document.getElementById('json-script-tag'); var myObject = JSON.parse(jsonElement.textContent);
źródło
document.getElementById
? W ten sposób nie musisz pamiętać, aby zachować to ostatnie. Nikt inny też nie zmieni strony w przyszłości.Aby odczytać
<script id="myJSON">
używany format JSONvar manifest= document.getElementById('myJSON').innerHTML; //sets manifest to the text in #myJSON manifest= JSON.parse(manifest) //Converts text into JSON
Możesz także użyć metod, aby wskazać skrypt, na przykład
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>
źródło
<script id="myJSON">
Tag potrzebuje równieżtype="application/json"
atrybut.JSON.parse($('script[src="mysript.js"]').html());
lub wymyśl inną metodę identyfikacji skryptu.
Może zamiast
.html()
ciebie możesz potrzebować.text()
. Niepewny. Wypróbuj oba.źródło
{"org": 10, "items":["one","two"]}
<script>
tag ma znaksrc
, NIE MOŻE zawierać żadnej treści.