这个JSON有什么问题:

时间:2016-06-08 06:56:13

标签: javascript html json script-tag

我已经查看了几个示例,我认为这是有效的,但是当我将JSON加载为脚本文件时,例如:

SyntaxError: Unexpected token :

Chrome给了我错误:

:

这是"side-menu":末尾的{ "side-menu": { "sections": [ { "dashboard": [ { "title": "Firewall", "url": "dashboard_2.html", "icon": "icon-bulb", "menuVisual": "selected" } ]} ]} } 。这是JSON:

ACTION_BATTERY_CHANGED

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

4 个答案:

答案 0 :(得分:2)

杰森对我来说也很好看。检查这个问题,似乎是相关的

HTML/Javascript: how to access JSON data loaded in a script tag with src set

答案 1 :(得分:1)

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

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

答案 2 :(得分: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>标记内。

答案 3 :(得分:0)

这里的问题是您正在尝试使用Script标记加载纯JSON,该标记默认情况下查找普通的旧脚本代码。你有两个一个选项 s -

  1. 在脚本代码中指定type="application/json",同时为其指定id。然后,只要您需要访问数据,请使用其id找到脚本元素并执行JSON.parse($("#scriptelementid").html());。如果您不使用jQuery,请使用简单的javascript替换jQuery。

  2. 或者,将您的json内容更改为此 -

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