我正在尝试将从服务器返回的令牌保存到localStorage中。但是,当我在开发人员工具的“应用程序”下的Chrome中签入存储项时,它显示为[object Object]。但是当我console.log这个变量时,我得到了我想要保存的完整令牌。
如何将令牌保存在本地存储中?
相关部分:
GetToken(body){
return new Promise((resolve,reject) => {
body != null ? resolve(new Object(body)) : reject('Error');
})
}
fetch(//-POST FUNCTION-//).then(response =>{
if (response.ok){
this.GetToken(response).then(value => value.json())
.then( data => {
var servertoken = data; //token gets saved
localStorage.setItem('customtoken',servertoken); //variable is [object Object]
})
}
else {
console.log("wrong")
}
})
答案 0 :(得分:0)
Localstorage仅存储字符串值。因此,您应该对令牌对象进行字符串化处理。
localStorage.setItem('customtoken', JSON.stringify(servertoken));
要检索它,只需解析字符串
const token = JSON.parse(localStorage.getItem('customtoken'));
答案 1 :(得分:0)
来自docs:
键和值始终是字符串(请注意,与对象一样,整数键将自动转换为字符串)。
您需要将这些对象序列化为一个字符串,然后在需要它们退回时反序列化它们:
GetToken(body){
return new Promise((resolve,reject) => {
body != null ? resolve(new Object(body)) : reject('Error');
})
}
fetch(//-POST FUNCTION-//).then(response =>{
if (response.ok){
this.GetToken(response).then(value => value.json())
.then( data => {
var servertoken = data; //token gets saved
localStorage.setItem('customtoken', JSON.stringify(servertoken)); //variable is [object Object]
})
}
else {
console.log("wrong")
}
})
答案 2 :(得分:0)
代替:
localStorage.setItem('customtoken',servertoken);
尝试以下方法:
localStorage.setItem('customtoken',data.servertoken);