未捕获的语法错误:意外的令牌:getJSON

Posted

技术标签:

【中文标题】未捕获的语法错误:意外的令牌:getJSON【英文标题】:Uncaught Syntax Error: Unexpected Token : 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 文件。 【参考方案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 调用加载文件,而无需尝试将文件包含在标题中

【讨论】:

以上是关于未捕获的语法错误:意外的令牌:getJSON的主要内容,如果未能解决你的问题,请参考以下文章

错误:未捕获的语法错误:意外的令牌 <

jQuery JSONP“未捕获的语法错误:意外的令牌:”

“未捕获的语法错误:意外的令牌:”与 $http.jsonp

致命错误:未捕获的异常“Phalcon\Mvc\Model\Exception”与消息“语法错误,意外令牌>,

WCF 跨域使用 Jsonp 错误未捕获语法错误:意外令牌:

节点/角度应用程序未捕获的语法错误:意外的令牌 <