J'ai lu en ligne que le problème du jeton inattendu peut provenir de l'utilisation de JSON.parse (). Sur mon iPhone 5, il n'y a pas de problème, mais sur mon Nexus 7, je reçois cette séquence d'erreurs:
Je me rends compte que c'est un doublon, mais je ne suis pas sûr de savoir comment résoudre ce problème spécifique. Voici où j'implémente JSON.parse ()
$scope.fav = [];
if ($scope.fav !== 'undefined') {
$scope.fav = JSON.parse(localStorage["fav"]);
}
Sur la base de votre question mise à jour, la condition if
n'a pas de sens, car vous définissez $scope.fav
sur []
juste avant, de sorte qu'elle ne peut jamais être "undefined"
.
Très probablement, vous voulez avoir votre test de cette façon:
if (typeof localStorage["fav"] !== "undefined") {
$scope.fav = JSON.parse(localStorage["fav"]);
}
Comme je ne sais pas s'il existe une situation où localStorage["fav"]
pourrait contenir la chaîne "undefined"
, vous devrez probablement également effectuer un test.
if (typeof localStorage["fav"] !== "undefined"
&& localStorage["fav"] !== "undefined") {
$scope.fav = JSON.parse(localStorage["fav"]);
}
Une façon d’éviter l’erreur (pas vraiment de la réparer, mais au moins, elle ne casse pas):
$scope.fav = JSON.parse(localStorage["fav"] || '[]');
Vous obtenez cette erreur parce que localStorage["fav"]
est undefined
.
Essayez ceci et vous comprendrez tout seul:
var a = undefined;
JSON.parse(a);
Unexpected token: u
provient presque toujours d'essayer d'analyser une valeur qui est undefined
.
Vous pouvez vous prémunir contre cela comme ceci:
if (localStorage['fav']) {
$scope.fav = JSON.parse(localStorage['fav'];
}
Dans mon cas, le problème était que je recevais la valeur sous la forme localStorage.getItem[key]
alors que cela aurait dû être localStorage.getItem(key)
.
Les réponses ci-dessus expliquent déjà mieux le reste et les problèmes normalement rencontrés.