本地存储中使用的变量未定义

时间:2019-08-09 07:34:04

标签: local-storage token

我正在尝试将从服务器返回的令牌保存到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")
        }
    })

3 个答案:

答案 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);