[英]Unexpected token u in JSON at position 0 (but only sometimes)
好的,所以这只是我的代码的一部分,实际上按照预期的方式工作。
var jqxhr = $.getJSON( "main.json", function(data) {
return data;
});
var json;
window.onload = function() {
var jsonTxt = jqxhr.responseText;
json = JSON.parse(jsonTxt);
....
}
但每10次尝试左右我都会收到以下错误:
Uncaught SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at window.onload (profile.js:8)
这真的很烦人,因为它会让我的页面空白。 我认为它与我试图解析JSON错误有关 - 或者其他什么。 我真的不知道,我期待任何可以引导我解决问题的答案。 谢谢。
那个意外的“你”是字符串“undefined”的第一个字母。 这是因为你的两个异步操作(即加载JSON并加载窗口)正在竞争完成,如果JSON加载速度不够快, window.onload
方法将尝试解析未加载的JSON字符串然而。
解决方案是在onload
甚至处理程序中移动JSON加载。 另外, getJSON
的重点在于它已经将您的响应解析为JSON对象,因此不需要JSON.parse()
:
window.onload = function() {
$.getJSON( "main.json", function(json) {
// process the results here
});
}
在调用JSON.parse()的位置插入try catch块。
文本本身可能不是JSON。
例如...
我认为这是问题所在,因为如果响应文本未定义,则char'u'位于位置0.因此JSON.parse()正在使用字符串。 不是javascript-object-notation文本文件。
if(response !== undefined){
try{
// do parse
}
catch(errror){
console.error("Not a JSON response")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.