我正在尝试将服务器发送的一些数据保存到客户端 localStorage 中的 EJS 模板中。但是,当我尝试访问模板中的 localStorage 时,我得到 localStorage is undefined 。
这是我的页面的一部分.ejs:
<% localStorage.setItem('info', JSON.stringify({'user': user})) %>
其中 user 是从服务器接收到的值。
这可能吗?
根据您想要做什么,有几个选项。我看到这篇文章想做一些不同的事情,但这是一种方法:
模板渲染并传递数据后
user
,添加脚本标签进行修改localStorage
。
<!-- example.ejs -->
<!-- check for user on page load -->
<% if (typeof user != "undefined") { %>
<!-- make user available to script tag -->
<% var user = user %>
<!-- use script tag to access ejs data and local storage -->
<script>
let user = <%- JSON.stringify(user) %>;
localStorage.setItem('info', JSON.stringify({'user': user}));
</script>
<% } %>
一旦对我有用就检查一下,
<script>
let data =JSON.parse('<%- JSON.stringify(data) %>')
localStorage.setItem("data", JSON.stringify(data))
</script>
为了访问,
<script>
let data = JSON.parse(localStorage.getItem("data"))
</script>
在撰写本文时,您可以这样做:
<script>
localStorage.setItem('data', <%- JSON.stringify(data) %>)
</script>
if
data
是视图的本地对象中的一个属性。