2016-12-01 56 views
0

如何獲取嵌入到腳本標記中的JSON數據?從<script>讀取JSON標記

<!DOCTYPE html> 
<html> 
    <head> 
     <script id="data" type="application/json">{org: 10, items:['one','two']}</script> 
     <script type="text/javascript"> 
      var obj = JSON.parse(document.getElementById('data').value); 
      console.log(obj); 
      console.log(obj.org); 
     </script> 
    </head> 
    <body> 
    </body> 
</html> 

我越來越:

未捕獲的SyntaxError:意外的標記ü在JSON在位置0

回答

6

<script>元素不是窗體控件。他們沒有value屬性(所以,當你閱讀它時,你得到undefined這是"undefined"當轉換爲一個字符串,並且這不是有效的JSON)。

閱讀,而不是元素中的文本節點的內容。

您還需要編寫JSON而不是JavaScript對象字面值。

  • 屬性名必須是字符串,不是標識符。
  • 字符串必須與"'被引用。

<script id="data" type="application/json">{"org": 10, "items":["one","two"]}</script> 
 
<script type="text/javascript"> 
 
var obj = JSON.parse(document.getElementById('data').firstChild.data); 
 
    console.log(obj); 
 
    console.log(obj.org); 
 
</script>

+0

爲什麼使用則firstChild當腳本標籤沒有子元素,不僅僅是數據? –

+0

@GTSJoe - 訪問元素節點內的文本節點。 – Quentin

+0

僅僅使用document.getElementById('data').text是否有優勢? –

0

u來自 「不確定」。嘗試:

JSON.parse(document.getElementById('data').innerHTML); 

...但請記住,您當前的輸入不是JSON。如此正確格式化它將是:

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