Bjo*_*inn 303 javascript jquery json
我正在尝试学习一些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
Run Code Online (Sandbox Code Playgroud)
我的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);
});
}
Run Code Online (Sandbox Code Playgroud)
我的JSON文件现在只有以下内容:
[
{
"english": "bag",
"kana": "kaban",
"kanji": "K"
},
{
"english": "glasses",
"kana": "megane",
"kanji": "M"
}
]
Run Code Online (Sandbox Code Playgroud)
现在错误报告在第11行,即var glacier = JSON.parse(data);行.
当我删除json文件时,我收到错误:"GET http://.../wokab.json 404(Not Found)"所以我知道它正在加载它(或者至少尝试).
ek_*_*_ny 312
看起来jQuery会猜测数据类型.即使您没有调用getJSON(),它也会执行JSON解析 - 然后当您尝试在对象上调用JSON.parse()时,您将收到错误.
可以在Aditya Mittal的答案中找到进一步的解释.
And*_*kus 76
问题很简单
jQuery.get('wokab.json', function(data) {
var glacier = JSON.parse(data);
});
Run Code Online (Sandbox Code Playgroud)
你要解析它两次.get使用dataType='json',所以数据已经是json格式.使用$.ajax({ dataType: 'json' ...专门设置返回的数据类型!
Adi*_*tal 53
基本上,如果响应头是text/html你需要解析,如果响应头是application/json,它已经为你解析了.
来自jquery成功处理程序的解析数据用于text/html响应:
var parsed = JSON.parse(data);
Run Code Online (Sandbox Code Playgroud)
来自应用程序/ json响应的jquery成功处理程序的解析数据:
var parsed = data;
Run Code Online (Sandbox Code Playgroud)
Mat*_*s M 10
另一个Unexpected token错误提示.javascript对象和json之间有两个主要区别:
正确的JSON
{
"english": "bag",
"kana": "kaban",
"kanji": "K"
}
Run Code Online (Sandbox Code Playgroud)
错误JSON 1
{
'english': 'bag',
'kana': 'kaban',
'kanji': 'K'
}
Run Code Online (Sandbox Code Playgroud)
错误JSON 2
{
english: "bag",
kana: "kaban",
kanji: "K"
}
Run Code Online (Sandbox Code Playgroud)
备注
这不是该问题的直接答案.但它是Unexpected token错误的答案.所以它可能会帮助其他人解决这个问题.