Ich habe online gelesen, dass das unerwartete Token u Problem durch die Verwendung von JSON.parse () entstehen kann. Auf meinem iPhone 5 gibt es kein Problem, aber auf meinem Nexus 7 bekomme ich diese Fehlerfolge:
Mir ist klar, dass es sich um ein Duplikat handelt, aber ich bin mir nicht sicher, wie ich dieses Problem lösen kann. Hier implementiere ich JSON.parse ()
$scope.fav = [];
if ($scope.fav !== 'undefined') {
$scope.fav = JSON.parse(localStorage["fav"]);
}
Basierend auf Ihrer aktualisierten Frage ist die if
-Bedingung nicht sinnvoll, da Sie $scope.fav
direkt vor []
setzen, sodass es niemals "undefined"
sein kann.
Wahrscheinlich möchten Sie Ihren Test so haben:
if (typeof localStorage["fav"] !== "undefined") {
$scope.fav = JSON.parse(localStorage["fav"]);
}
Da ich nicht weiß, ob es eine Situation gibt, in der localStorage["fav"]
die Zeichenfolge "undefined"
enthalten könnte, benötigen Sie wahrscheinlich auch einen Test dafür.
if (typeof localStorage["fav"] !== "undefined"
&& localStorage["fav"] !== "undefined") {
$scope.fav = JSON.parse(localStorage["fav"]);
}
Eine Möglichkeit, den Fehler zu vermeiden (nicht wirklich beheben, aber zumindest nicht brechen):
$scope.fav = JSON.parse(localStorage["fav"] || '[]');
Sie erhalten diese Fehlermeldung, weil localStorage["fav"]
undefined
ist.
Probieren Sie es aus und Sie werden alles selbst verstehen:
var a = undefined;
JSON.parse(a);
Unexpected token: u
stammt fast immer aus dem Versuch, einen Wert zu analysieren, der undefined
ist.
Davor kannst du dich schützen:
if (localStorage['fav']) {
$scope.fav = JSON.parse(localStorage['fav'];
}
In meinem Fall bestand das Problem darin, dass ich den Wert als localStorage.getItem[key]
erhielt, während es localStorage.getItem(key)
hätte sein sollen.
Die übrigen und normalerweise auftretenden Probleme wurden bereits anhand der obigen Antworten besser erläutert.