Tengo una página generada dinámicamente donde quiero usar un JavaScript estático y pasarle una cadena JSON como parámetro. He visto este enfoque utilizado por Google (consulte el botón +1 de Google: ¿cómo lo hacen? ).
Pero, ¿cómo debo leer la cadena JSON de 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>
En este JavaScript, me gustaría usar el argumento JSON {"org": 10, "items":["one","two"]}
del documento HTML. No sé si es mejor hacerlo con jQuery o sin él.
$(function() {
// read JSON
alert("the json is:")
})
javascript
json
script-tag
Jonas
fuente
fuente
<script>
elemento que ha definido SRC no debe contener nada más que nuevas líneas y / o comentarios. Consulte "Un elemento de secuencia de comandos con un atributo src debe contener solo:" en el enlace anterior. De lo contrario, los validadores de HTML se quejarán.<script src="jquery-1.6.2.min.js"></script>
allí.Terminé con este código JavaScript para ser independiente de jQuery.
var json = document.getElementsByTagName('script'); var myObject = JSON.parse(json[json.length-1].textContent);
fuente
document.getElementById
? De esa manera, no es necesario que recuerde mantenerlo al final. Tampoco lo hará quien más cambie la página en el futuro.Para leer JSON en
<script id="myJSON">
usovar manifest= document.getElementById('myJSON').innerHTML; //sets manifest to the text in #myJSON manifest= JSON.parse(manifest) //Converts text into JSON
También puede usar métodos para apuntar al script como
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>
fuente
<script id="myJSON">
etiqueta también necesita eltype="application/json"
atributo.JSON.parse($('script[src="mysript.js"]').html());
o inventar algún otro método para identificar el guión.
Quizás en lugar de
.html()
lo que necesite.text()
. No estoy seguro. Pruébelos ambos.fuente
{"org": 10, "items":["one","two"]}
<script>
etiqueta tiene elsrc
, NO DEBE tener ningún contenido.