recorrer - ¿Cómo puedo leer un JSON en la etiqueta de script de JavaScript?
recorrer json javascript (4)
Tengo una página generada dinámicamente en la que quiero usar un JavaScript estático y pasarle una cadena JSON como parámetro. He visto este enfoque usado por Google (vea el Botón +1 de Google: ¿Cómo lo hacen? ).
Pero, ¿cómo debería leer la cadena JSON desde 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:")
})
Para leer JSON en <script id="myJSON">
use
var 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 a la secuencia de comandos 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>
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);
Yo cambiaría la declaración de script a esto:
<script id="data" type="application/json">{"org": 10, "items":["one","two"]}</script>
Tipo de nota y campos de identificación. Después de esto
var data = JSON.parse(document.getElementById(''data'').innerHTML);
Funcionará bien en todos los navegadores.
El type="application/json"
es necesario para evitar que el navegador lo analice mientras se carga.
JSON.parse($(''script[src="mysript.js"]'').html());
o inventar algún otro método para identificar el script.
Tal vez en lugar de .html()
pueda necesitar .text()
. No es seguro. Pruébalos ambos.