我正在尝试学习一些 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);行。
var glacier = JSON.parse(data);
当我删除 json 文件时,我收到错误消息:“GET http://.../wokab.json 404(未找到)”所以我知道它正在加载它(或至少尝试加载它)。
看起来 jQuery 对数据类型进行了猜测。即使您没有调用 getJSON(),它也会进行 JSON 解析——然后当您尝试在对象上调用 JSON.parse() 时,您会收到错误消息。
进一步的解释可以在回答中找到。
基本上,如果响应头是 text/html 你需要解析,如果响应头是 application/json 它已经为你解析了。
从 jquery 成功处理程序中解析数据以获取 text/html 响应:
var parsed = JSON.parse(data);
来自 jquery 成功处理程序的解析数据,用于应用程序/json 响应:
var parsed = data;