簡體   English   中英

意外的令牌:你的JSON.parse()問題

[英]Unexpected token: u JSON.parse() issue

我在網上看到,意外的令牌問題可能來自於使用JSON.parse()。 在我的iPhone 5上沒有問題,但在我的Nexus 7上,我得到了一系列錯誤:

在此輸入圖像描述 查看大

我意識到這是重復的,但我不知道如何解決這個問題。 這是我實現JSON.parse()的地方

 $scope.fav = []; 

if ($scope.fav !== 'undefined') {
   $scope.fav = JSON.parse(localStorage["fav"]);
}

根據您更新的問題, if條件沒有意義,因為您之前將$scope.fav設置$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"]);
}

避免錯誤的一種方法(不是真正修復它,但至少不會破壞):

$scope.fav = JSON.parse(localStorage["fav"] || '[]');

您收到該錯誤是因為localStorage["fav"] undefined

試試這個,你會自己理解:

var a = undefined;
JSON.parse(a);

Unexpected token: u幾乎總是源於嘗試解析undefined的值。

你可以這樣防范:

if (localStorage['fav']) {
  $scope.fav = JSON.parse(localStorage['fav'];
}

在我的情況下,問題是我得到的值是localStorage.getItem[key]而它應該是localStorage.getItem(key)

通過上述答案已經更好地解釋了其余的和通常面臨的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM