我怎样才能从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>