javascript - syntaxerror - unexpected token in json at position 0
Un token inesperado: u JSON.parse() problema (4)
Base en su pregunta actualizada la condición if
no tiene sentido, ya que estableció $scope.fav
en []
justo antes, por lo que nunca puede estar "undefined"
.
Lo más probable es que quieras tener tu prueba de esa manera:
if (typeof localStorage["fav"] !== "undefined") {
$scope.fav = JSON.parse(localStorage["fav"]);
}
Como no sé si hay una situación en la que localStorage["fav"]
pueda contener la cadena "undefined"
es probable que también necesite una prueba para esto.
if (typeof localStorage["fav"] !== "undefined"
&& localStorage["fav"] !== "undefined") {
$scope.fav = JSON.parse(localStorage["fav"]);
}
He leído en línea que el problema inesperado del token u puede provenir del uso de JSON.parse (). En mi iPhone 5 no hay problema, pero en mi Nexus 7 obtengo esta secuencia de errores:
Me doy cuenta de que esto es un duplicado, pero no estoy seguro de cómo resolverlo para mi problema específico. Aquí es donde implemento JSON.parse ()
$scope.fav = [];
if ($scope.fav !== ''undefined'') {
$scope.fav = JSON.parse(localStorage["fav"]);
}
En mi caso, el problema era que localStorage.getItem[key]
el valor como localStorage.getItem[key]
mientras que debería haber sido localStorage.getItem(key)
.
El resto y los problemas que normalmente se enfrentan se explican mejor en las respuestas anteriores.
Una forma de evitar el error (no corregirlo realmente, pero al menos no se romperá):
$scope.fav = JSON.parse(localStorage["fav"] || ''[]'');
localStorage["fav"]
ese error porque localStorage["fav"]
undefined
está undefined
.
Prueba esto y entenderás todo por ti mismo:
var a = undefined;
JSON.parse(a);
Unexpected token: u
casi siempre se deriva de intentar analizar un valor que undefined
está undefined
.
Puedes protegerte de eso así:
if (localStorage[''fav'']) {
$scope.fav = JSON.parse(localStorage[''fav''];
}