web-dev-qa-db-fra.com

Jeton inattendu: u Problème JSON.parse ()

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:

enter image description hereVoir en grand

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"]);
}
18
benjipelletier

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"]);
}
19
t.niese

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);
12
avetisk

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'];
}
4
Dave Ward

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.

0
Black Mamba