未捕获的语法错误:意外的标记:getJSON。

4
我正在尝试使用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);
     });
});

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


1
这段代码似乎可以直接使用,也许你应该考虑发布整个文件,或者至少包含结尾的闭合括号。 - SeinopSys
你可以尝试使用其中一个工具来验证你的JSON,例如http://jsonformatter.curiousconcept.com/。 - Sirko
我将JSON文件通过您提供的验证器进行了验证,结果很好。我已经编辑了帖子并添加了完整的JSON文件。 - user3477885
3个回答

2

尝试使用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);
        });
});

希望这能帮到你。

1
如果在删除了那个AJAX调用之后出现错误,问题实际上可能在您的某个HTML页面中,该页面试图包含诸如以下内容:
<script src="js/myJsonFile.json"></script>

如果是这种情况,您只需要删除那一行,因为您想通过AJAX调用加载文件,并不需要尝试在标头中包含该文件。

1
如果你查看了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);
        });        
    });
});

演示

编辑后的演示


谢谢,这对我帮助很大,让我能够从文件中获取数据。然而,错误仍然出现在我的代码中。它似乎并没有影响到代码的运行,我主要是想更好地理解为什么会出现这个错误。 - user3477885
@user3477885 我假设响应以JSON数据类型定义得很好。如果你不确定,解析一下以确保你有正确的格式。请看我的编辑。 - code-jaff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接