我在网上看过,意外的令牌问题可能来自于使用JSON.parse()。在我的iPhone 5上没有问题,但在我的Nexus 7上,我得到了一系列错误:
我意识到这是重复的,但我不知道如何解决这个问题。这是我实现JSON.parse()
的地方 $scope.fav = [];
if ($scope.fav !== 'undefined') {
$scope.fav = JSON.parse(localStorage["fav"]);
}
答案 0 :(得分:19)
根据您更新的问题,if
条件没有意义,因为您之前将$scope.fav
设置为[]
,因此它永远不会是"undefined"
。
您很可能希望以这种方式进行测试:
if (typeof localStorage["fav"] !== "undefined") {
$scope.fav = JSON.parse(localStorage["fav"]);
}
由于我不知道是否存在localStorage["fav"]
可能包含字符串"undefined"
的情况,您可能还需要对此进行测试。
if (typeof localStorage["fav"] !== "undefined"
&& localStorage["fav"] !== "undefined") {
$scope.fav = JSON.parse(localStorage["fav"]);
}
答案 1 :(得分:12)
避免错误的一种方法(不是真正修复它,但至少不会破坏):
$scope.fav = JSON.parse(localStorage["fav"] || '[]');
由于localStorage["fav"]
为undefined
,您收到该错误。
试试这个,你自己就能理解:
var a = undefined;
JSON.parse(a);
答案 2 :(得分:4)
Unexpected token: u
几乎总是源于尝试解析undefined
的值。
你可以这样防范:
if (localStorage['fav']) {
$scope.fav = JSON.parse(localStorage['fav'];
}
答案 3 :(得分:0)
在我的情况下,问题是我得到的值为localStorage.getItem[key]
,而它应该是localStorage.getItem(key)
。
上述答案已经更好地解释了其余的和通常面临的问题。