刷新后localStorage清除

时间:2013-04-18 08:34:38

标签: php javascript json local-storage

我将数据保存到浏览器的本地存储区时遇到问题。

我有一个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但是当我刷新页面时它已经消失......

有人知道这是怎么来的吗?

3 个答案:

答案 0 :(得分:1)

您正在使用HTML属性来传输值,尽管您不对值进行任何HTML编码。这可能会破坏您的代码。如果您要验证您的HTML源代码,您可能已经看到了。首先验证(安装一个自动为您执行此操作的浏览器扩展名。)

同样如您所写,您需要对 onclick 属性值进行HTML编码:

echo "<a onclick='save(", htmlspecialchars($data), ")' s [...]
                          ^^^^^^^^^^^^^^^^

http://php.net/htmlspecialchars

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