У меня есть динамически сгенерированная страница, на которой я хочу использовать статический JavaScript и передать ей строку JSON в качестве параметра. Я видел этот подход, используемый Google (см. . Кнопку Google +1: как они это делают? ).
Но как мне прочитать строку JSON из 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>
В этом JavaScript я хотел бы использовать аргумент JSON {"org": 10, "items":["one","two"]}
из HTML-документа. Не знаю, лучше ли это делать с помощью jQuery или без него.
$(function() {
// read JSON
alert("the json is:")
})
javascript
json
script-tag
Йонас
источник
источник
<script>
элемент , который определил SRC не должна содержать ничего, кроме новых линий и / или комментариев. См. «Элемент сценария с атрибутом src должен содержать только:» в приведенной выше ссылке. В противном случае валидатор HTML будет жаловаться.<script src="jquery-1.6.2.min.js"></script>
там.В итоге я получил этот код JavaScript, независимый от jQuery.
var jsonElement = document.getElementById('json-script-tag'); var myObject = JSON.parse(jsonElement.textContent);
источник
document.getElementById
? Таким образом, вам не нужно помнить, чтобы хранить его в последний раз. И никто другой не изменит страницу в будущем.Для чтения JSON в
<script id="myJSON">
использованииvar manifest= document.getElementById('myJSON').innerHTML; //sets manifest to the text in #myJSON manifest= JSON.parse(manifest) //Converts text into JSON
Вы также можете использовать методы, чтобы указать на скрипт, например
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>
источник
<script id="myJSON">
Тег также нуженtype="application/json"
атрибут.JSON.parse($('script[src="mysript.js"]').html());
или изобрести какой-нибудь другой способ идентифицировать сценарий.
Может вместо
.html()
вас может понадобиться.text()
. Не уверена. Попробуйте оба.источник
{"org": 10, "items":["one","two"]}
<script>
тег имеет,src
то он НЕ ДОЛЖЕН иметь никакого содержимого.