我怎样才能从JavaScript脚本标签中读取JSON?
我有一个dynamic生成的页面,我想要使用静态JavaScript,并传递一个JSONstring作为参数。 我看到了Google使用的这种方法(请参阅Google的+1button:他们是如何做的? )。
但是,我应该如何从JavaScript读取JSONstring?
<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中,我想从HTML文档中使用JSON参数{"org": 10, "items":["one","two"]}
。 我不知道是否最好用jQuery或不用。
$(function() { // read JSON alert("the json is:") })
我会将脚本声明更改为:
<script id="data" type="application/json">{"org": 10, "items":["one","two"]}</script>
注意types和ID字段。 之后
var data = JSON.parse(document.getElementById('data').innerHTML);
在所有浏览器中都能正常工作。
需要type="application/json"
来防止浏览器在加载时parsing它。
我结束了这个JavaScript代码独立于jQuery。
var json = document.getElementsByTagName('script'); var myObject = JSON.parse(json[json.length-1].textContent);
JSON.parse($('script[src="mysript.js"]').html());
或者发明一些其他方法来识别脚本。
也许而不是.html()
你可能需要.text()
。 不确定。 试试他们两个。
阅读<script id="myJSON">
JSON使用
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>