2011-09-28 11 views
53

Mam stronę generowaną dynamicznie, w której chcę użyć statycznego JavaScript i przekazać mu ciąg JSON jako parametr. Widziałem to podejście stosowane przez Google (patrz Google's +1 Button: How do they do it?).Jak mogę odczytać JSON w skrypcie tag z JavaScript?

Ale jak powinienem odczytać ciąg JSON z 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> 

W tej JavaScript Chciałbym użyć argumentu JSON {"org": 10, "items":["one","two"]} z dokumentu HTML. Nie wiem, czy najlepiej jest to zrobić z jQuery lub bez.

$(function() { 
    // read JSON 

    alert("the json is:") 
}) 

Odpowiedz

100

chciałbym zmienić deklarację skryptu do tego:

<script id="data" type="application/json">{"org": 10, "items":["one","two"]}</script> 

typu Nota i identyfikator pola. Po tym czasie będzie działać dobrze we wszystkich przeglądarkach.

Wymagana jest type="application/json", aby uniemożliwić przeglądanie przeglądarki podczas ładowania.

+0

Cóż, chcę, aby skrypt-punkt wskazywał na JavaScript, więc nie jest to tylko dla JSON. JSON jest tylko argumentem do skryptu. – Jonas

+4

Zgodnie ze specyfikacją HTML5: http://dev.w3.org/html5/markup/script.html element '' tam. –

2
JSON.parse($('script[src="mysript.js"]').html()); 

lub wymyślić jakąś inną metodę identyfikowania skrypt.

Może zamiast .html() możesz potrzebować .text(). Niepewny. Wypróbuj oba.

+0

Dzięki, to działało kiedy zmienił json do '{" org ": 10," items ": [" one "," two "]}' – Jonas

14

Skończyłem z tym kodem JavaScript, aby być niezależnym od jQuery.

var json = document.getElementsByTagName('script'); 
var myObject = JSON.parse(json[json.length-1].textContent); 
+31

Dlaczego po prostu nie dać skryptowi identyfikatora i zabrać go za pomocą 'document.get ElementById'? W ten sposób nie musisz pamiętać, aby zachować go na końcu. Ani ktokolwiek inny zmieni stronę w przyszłości. – George

2

Aby przeczytać JSON w <script id="myJSON"> użytku

var manifest= document.getElementById('myJSON').innerHTML; //sets manifest to the text in #myJSON 
manifest= JSON.parse(manifest) //Converts text into JSON 

można również użyć metod, aby wskazać skrypt jak 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>

+0

Znacznik '

Powiązane problemy