【问题标题】:Uncaught Syntax Error: Unexpected Token : getJSON未捕获的语法错误:意外的令牌:getJSON
【发布时间】:2014-05-09 17:06:12
【问题描述】:

我正在尝试使用我的 JSON 文件中的数据动态填充我的页面我收到此错误

"Uncaught Syntax Error: Unexpected Token :" on line 2.

这是我的 json 文件,还有更多内容,但我不想发布整个文件。

{
"jobs": [
    {
        "title": "Graduate IT Development Programme #1",
        "path": "/path/to/job",
        "type": "Graduate job",
        "location": [
            "North West",
            "North East"
        ],
        "closingDate": "20/05/2014",
        "continuous": false,
        "skills": [
            "HTML",
            "CSS",
            "JavaScript",
            "Java",
            "CI",
            "Testing"
        ],
        "contract": "Permanent",
        "salary": {
            "lower": 14501,
            "upper": 17000,
            "currency": "£"
        },
        "employer": {
            "name": "Mercer",
            "href": "/path/to/employer",
            "logo": "img/mercer-logo.png"
        }
    },
    {
        "title": "Web Developer",
        "path": "/path/to/job",
        "type": "Graduate job",
        "location": ["Greater London"],
        "continuous": true,
        "skills": [
            "HTML",
            "CSS",
            "JavaScript"
        ],
        "salary": {
            "lower": 16000,
            "upper": 21000,
            "currency": "€"
        },
        "employer": {
            "name": "FDM plc",
            "href": "/path/to/employer",
            "logo": "img/fdm-logo.png"
        }
    },
    {
        "title": "Front-end Web Developer",
        "path": "/path/to/job",
        "type": "Graduate scheme",
        "location": ["Greater London"],
        "closingDate": "20/04/2014",
        "continuous": false,
        "skills": [
            "HTML",
            "CSS",
            "Java",
            "Testing"
        ],
        "salary": {
            "lower": 17001,
            "upper": 19500,
            "currency": "£"
        },
        "employer": {
            "name": "British Airways plc",
            "href": "/path/to/employer",
            "logo": "img/british-airways-logo.png"
        }
    }
    ]
}

这是我的 .getJSON 函数(document.write 在它工作之前只是临时的)

$(document).ready(function() {
     $.getJSON( 'js/jobs.json',function( result ){
        document.write(result.jobs.title);
     });
});

所以我不确定问题出在哪里。看了其他问题和其他解决方案后,我感到比以前更加困惑了。

【问题讨论】:

  • 这段代码似乎是按原样工作的,也许你应该考虑发布文件,或者至少是它结束的方式(带有右括号)。
  • 您可以尝试使用其中一种工具验证您的 JSON,例如,jsonformatter.curiousconcept.com
  • 我将 JSON 通过您提供的验证器进行了处理,结果很好。我已经编辑了帖子并添加了完整的 JSON 文件。

标签: jquery json getjson


【解决方案1】:

尝试使用 stringify,如下所示

$(document).ready(function() {
        $.getJSON( 'js/jobs.json',function( result ){
            var jsonString = JSON.stringify(result);
            var result = JSON.parse(jsonString);
            console.log(result); 
            //document.write(result.jobs.title);
        });
});

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    如果你看过 json 结构,jobs 是一个对象数组。因此title 不能直接访问。例如,您应该通过索引来获取它。

    $(document).ready(function () {
        $.getJSON('js/jobs.json', function (result) {
            // in case the result is not in json data type
            // otherwise not necessary
            result = JSON.parse(result); 
            result.jobs.map(function (v) {
                console.log(v.title);
                document.write(v.title);
            });        
        });
    });
    

    DEMO

    EDITED DEMO

    【讨论】:

    • 您好,感谢这对我有很大帮助,从文件中获取数据。然而,错误仍然出现在我身上。无论如何,它似乎不会影响代码,我主要是想更好地了解错误发生的原因。
    • @user3477885 我假设响应是用数据类型 json 很好地定义的。如果您不确定它,请解析它以确保您具有正确的格式。查看我的编辑
    【解决方案3】:

    如果在删除该 AJAX 调用后出现错误,则问题实际上可能出在您的某个 HTML 页面中,该页面试图包含诸如

    之类的内容
    <script src="js/myJsonFile.json"></script>
    

    如果是这种情况,您只需删除该行,因为您想通过 AJAX 调用加载文件,而无需尝试将文件包含在标题中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 2011-04-07
      • 2014-11-24
      • 2012-09-07
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多