【问题标题】:What is wrong with this JSON: [duplicate]这个 JSON 有什么问题:[重复]
【发布时间】:2016-10-08 07:06:22
【问题描述】:

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

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

Chrome 给了我错误:

SyntaxError: Unexpected token :

"side-menu": 末尾的:。这是 JSON:

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

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

【问题讨论】:

  • 你的JSON格式很好,你可以在json.parser.online.fr查看它
  • 是的。在不指定语言的情况下使用脚本标签将假定 js 不是 json。
  • 那么您对&lt;script src="../js/side-menu.json"&gt;&lt;/script&gt; 的期望是什么?它应该做什么?
  • 为什么要把它作为脚本加载?它应该作为字符串加载到某个变量中,或者作为结构解码,或者作为 ajax 调用加载到 rt 中。
  • 你应该使用 Json 来定义它 type="application/json" 在脚本标签中。

标签: javascript html json script-tag


【解决方案1】:

json 对我来说也很好。检查this issue,似乎相关

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

      • 之前的回答暗示选项 1 不起作用:stackoverflow.com/questions/13515141/…
      • 我开始写这篇文章时没有答案:)。
      • 我的意思是先前对一个先前问题的回答。很抱歉上面的链接。链接错误
      • 谢谢,我现在明白你的意思了。
      【解决方案4】:

      我不确定你这样做是为了达到什么目的。

      <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>
      

      &lt;script&gt; 标签内。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-22
        • 1970-01-01
        • 2021-09-11
        • 2021-02-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多