【问题标题】:Save complete JSON in session storage在会话存储中保存完整的 JSON
【发布时间】:2020-05-19 18:26:51
【问题描述】:

我有一个网站从外部 API 获取数据。我想将 API 中的所有数据保存在会话存储中(不仅是一个对象,而且是获取请求的整个结果)。 我能够做到这一点,但是当我重新加载页面时我无法重用数据。数据已存储,但函数无法使用。

if (sessionStorage.getItem("data") == null) { 
fetch('XXX')    
.then(function(resp) { return resp.json() }) 
.then(function(data) {
    APIresults(data);
    sessionStorage.setItem("data", JSON.stringify(data))
})
    .catch(function() {
    });

}
// This first part seems to works - now second part when user already have data in sessionstorage

     else if (sessionStorage.getItem("data") != null) { 
    let data = sessionStorage.getItem("data");
        function workingresults (data) {
            APIresults(data);
        };

    }
    }

谢谢!

【问题讨论】:

  • 那是因为会话存储中的数据存储为字符串。在从存储中读取它之后执行JSON.parse(data),您将能够将其作为对象访问。

标签: javascript fetch session-storage


【解决方案1】:

就像@LuudJacobs 说你必须像这样使用JSON.parse()

if (sessionStorage.getItem("data") == null) { 
fetch('XXX')    
.then(function(resp) { return resp.json() }) 
.then(function(data) {
    APIresults(data);
    sessionStorage.setItem("data", JSON.stringify(data))
})
    .catch(function() {
    });

}
// This first part seems to works - now second part when user already have data in sessionstorage

     else if (sessionStorage.getItem("data") != null) { 
    let data = JSON.parse(sessionStorage.getItem("data"));
        function workingresults (data) {
            APIresults(data);
        };

    }
    }

更多主题:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

类似的问题:

JSON.parse() from localStorage issue

希望对您有所帮助! :)

【讨论】:

    【解决方案2】:

    在将数据加载到存储中时,您需要将其字符串化为对象,以便您可以检索和使用数据。 Json.you 使用了 stringfy,但是当您获取正在加载的数据时,您试图将其作为字符串获取。 Json。你应该使用 Parse。

    let data = JSON.parse(sessionStorage.getItem("data")); // just added JSON.Parse method.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-24
      • 2017-05-24
      • 2014-09-10
      • 1970-01-01
      • 2019-05-02
      • 2014-05-20
      • 2016-11-25
      • 1970-01-01
      相关资源
      最近更新 更多