2016-06-08 64 views
0

我看几个例子,一切都过去了,在我看来,这是有效的,但是当我加载JSON作为一个脚本文件,如:什么不对这个JSON:

<script src="../js/side-menu.json"></script> 

铬给我的错误:

SyntaxError: Unexpected token : 

这是:"side-menu":结束。这是JSON:

{ 
    "side-menu": { 
    "sections": [ 
     { 
     "dashboard": [ 
      { 
      "title": "Firewall", 
      "url": "dashboard_2.html", 
      "icon": "icon-bulb", 
      "menuVisual": "selected" 
      } 
     ]} 
    ]} 
} 

这可能是因为浏览器正在将该文件解释为JavaScript而不是?

+0

你的JSON很好格式化,您可以检查它在http://json.parser.online.fr/ –

+0

是。使用脚本标签而不指定lamguage将假定js不是json。 – RecursiveExceptionException

+2

那你对'''有什么期望呢?它应该做什么? – zerkms

回答

0

这里的问题是,您正试图使用​​默认寻找普通的旧脚本代码的脚本标记加载纯JSON。你有一个选项小号这里 -

  1. 脚本标签指定type="application/json",也给它一个id。然后,无论您需要访问数据的哪个位置,都可以使用其ID找到脚本元素,并执行JSON.parse($("#scriptelementid").html());。如果您不使用它,请用纯javascript替换jQuery。

  2. OR,改变你的JSON内容本 -

    var exportedData = { 
        "side-menu": { 
        "sections": [ 
         { 
         "dashboard": [ 
          { 
          "title": "Firewall", 
          "url": "dashboard_2.html", 
          "icon": "icon-bulb", 
          "menuVisual": "selected" 
          } 
         ]} 
        ]} 
    }; 
    
+1

以前的答案意味着选项1不起作用:http://stackoverflow.com/questions/13515141/html-javascript-how-to-access-json-data-loaded-in-a-script-tag-with- src-set – slebetman

+0

当我写这篇文章的时候没有答案:)。 – hazardous

+1

我的意思是以前的答案,以前的问题。对不起,关于上面的链接。错误的链接 – slebetman

0

我不知道你正在努力实现这样做的。

<script src="../js/side-menu.json"></script> 

这会得到你的json并将其解释为javascript。

也许你在找什么。

<script language="javascript">` 
var my_json = { 
    "side-menu": { 
    "sections": [ 
     { 
     "dashboard": [ 
      { 
      "title": "Firewall", 
      "url": "dashboard_2.html", 
      "icon": "icon-bulb", 
      "menuVisual": "selected" 
      } 
     ]} 
    ]} 
}; 
</script> 

里面的<script>标签。

1

JS解析器将花括号与代码块而不是对象文字混淆。你可以通过把它放在像这样的括号({...})中来避免这种情况。

如果你这样做,你的文件将不再是JSON。这个后续问题究竟是如何解决的,取决于你,但是你必须首先考虑一些不同的东西:你期望从包含仅包含JSON的文件中得到什么?毕竟,如果你这样做,这个JSON将不会在变量中可用,因为只有JSON值,没有赋值给变量。