注意
localStorageは文字列しか保存できないことを知ったので、私の質問は重複としてマークされました。その場合は元の質問を参照してください。
サーバーの応答を読み取ろうとしています。これは非常に簡単ですが、どこが間違っているのかわかりません。一日の仕事の後、デバッグにうんざりしています。
これはRESTAPIからの私の応答です:
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6Im9rdXNlciIsImV4cCI6MTUxNjYxNDk2MywiZW1haWwiOiJkYWh1QGdhaWwuY29tIiwib3JpZ19pYXQiOjE1MTY2MTEzNjN9.BIno_cz8dQsb63bgobNtSQxpxbzlTfsnvtMr8H3EGVs",
"user": {
"pk": 2,
"username": "okuser",
"email": "[email protected]",
"first_name": "",
"last_name": ""
}
}
キー「トークン」を保存して使用することはできますが、このコードでuser.pkを取得することはできません。
success: function(data) {
//save JWT token
localStorage.token = data.token;
localStorage.user = data.user;
ユーザーは、このような他の関数で取得しています。実際には、user.pkが未定義として表示されています。
var user = localStorage.user;
console.log("user pk : " + user.pk);
if(!user)
{
somethingWentWrongHandler();
return;
}
上記のコードでは、「user」は[object Object]として存在しますが、user.pkは未定義です。
Localstorageはオブジェクトではなく文字列を保持するため、実行するlocalStorage.user = data.user
と次のようになります。localStorage.user = data.user.toString();
したがって、それを文字化して、読むときに解析する必要があります。
localStorage.user = JSON.stringify(data.user); // store it
var user = JSON.parse(localStorage.user) // read it
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加