我不断得到“未捕获的语法错误:意外的令牌o”

2022-08-30 00:02:08

我正在尝试学习一些html / css / javascript,所以我正在为自己编写一个教学项目。

这个想法是将一些词汇包含在json文件中,然后将其加载到表中。我设法将文件加载并打印出其中一个值,之后我开始编写代码以将值加载到表中。

这样做之后,我开始收到错误,所以我删除了我写的所有代码,只留下一行(之前工作的同一行)......只有错误仍然存在。

错误如下:

Uncaught SyntaxError: Unexpected token o
(anonymous function)script.js:10
jQuery.Callbacks.firejquery-1.7.js:1064
jQuery.Callbacks.self.fireWithjquery-1.7.js:1182
donejquery-1.7.js:7454
jQuery.ajaxTransport.send.callback

我的javascript代码包含在一个单独的文件中,只是这个:

function loadPageIntoDiv(){
    document.getElementById("wokabWeeks").style.display = "block";
}

function loadWokab(){
    //also tried getJSON which threw the same error
    jQuery.get('wokab.json', function(data) {
        var glacier = JSON.parse(data);
    });
}

我的JSON文件现在只有以下内容:

[
    {
        "english": "bag",
        "kana": "kaban",
        "kanji": "K"
    },

    {
        "english": "glasses",
        "kana": "megane",
        "kanji": "M"
    }
]

现在,该错误在第 11 行(即该行)中报告。var glacier = JSON.parse(data);

当我删除json文件时,我收到错误:“GET http://.../wokab.json 404(未找到)”,所以我知道它正在加载它(或者至少尝试)。


答案 1

看起来jQuery对数据类型进行了猜测。即使您没有调用getJSON(),它也会执行JSON解析 - 然后当您尝试在对象上调用JSON.parse()时,您会收到错误。

进一步的解释可以在Aditya Mittal的答案中找到。


答案 2

问题很简单

jQuery.get('wokab.json', function(data) {
    var glacier = JSON.parse(data);
});

您正在解析它两次。 使用 ,因此数据已经是 json 格式。用于专门设置返回的数据类型!getdataType='json'$.ajax({ dataType: 'json' ...