我将数据保存到浏览器的本地存储区时遇到问题。
我有一个php文件和一个开关。当类型为“收藏夹”时,我创建一个按钮并将json数据发送到我的javascript中的“保存”功能。
case 'favorites':
$session = $m->session;
$data = json_encode((array)$session);
echo "<a onclick='save(".$data.")' style='cursor:pointer;' class='metacell'>
<img src='".buildUri('images/icons/favorite.png')."' width='16' />
<span>Add to favorites</span>
</a>";
break;
这是我的javascript:
function save(data)
{
var thedata = data;
// STORE THE ABOVE DATA IN LOCALSTORAGE
localStorage.setItem('data', "testje");
}
我目前正在测试一些文字“testje”。当我按下按钮时,它进入localstorage但是当我刷新页面时它已经消失......
有人知道这是怎么来的吗?
答案 0 :(得分:1)
您正在使用HTML属性来传输值,尽管您不对值进行任何HTML编码。这可能会破坏您的代码。如果您要验证您的HTML源代码,您可能已经看到了。首先验证(安装一个自动为您执行此操作的浏览器扩展名。)
同样如您所写,您需要对 onclick 属性值进行HTML编码:
echo "<a onclick='save(", htmlspecialchars($data), ")' s [...]
^^^^^^^^^^^^^^^^
答案 1 :(得分:0)
试试这个:
var thedata ;
function save(data)
{
thedata = data;
localStorage.thedata="testje";
}
答案 2 :(得分:0)
function save(data)
{
// STORE THE ABOVE DATA IN LOCALSTORAGE
window.localStorage.setItem('data', data);
}
试试吧! localStorage可能已经成为一个全局变量(在页面的上下文中)并且根本没有指向真正的localStorage