【问题标题】:localStorage cleared after refresh刷新后清除localStorage
【发布时间】:2013-04-18 17:33:12
【问题描述】:

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

我有一个 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”。当我按下按钮时,它会进入本地存储,但是当我刷新页面时,它就消失了......

有人知道这是怎么回事吗?

【问题讨论】:

  • 能否提供完整的JS代码?确保在加载页面时不要覆盖 localStorage。
  • 试试localStorage.data= "testje";
  • 在萤火虫中检查&lt;a onclick='save(".$data.")' style='cursor:pointer;' class='metacell'&gt;
  • 您确定在 PHP 中进行测试吗?如果您在file:// 中打开文件时进行测试,则无法正常工作。

标签: php javascript json local-storage


【解决方案1】:

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

您还需要对 onclick 属性值进行 HTML 编码:

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

http://php.net/htmlspecialchars

【讨论】:

  • 先验证是什么意思? (以及什么浏览器扩展?...)
  • 首先验证是指 HTML 验证。你用的是哪个浏览器,我可以给你看一个扩展。
【解决方案2】:

试试这个:

 var thedata ;

function save(data)
{
    thedata = data;

    localStorage.thedata="testje";
}

【讨论】:

  • localStorage.thedata="testje";
【解决方案3】:
function save(data)
    {

        // STORE THE ABOVE DATA IN LOCALSTORAGE
        window.localStorage.setItem('data', data);
    }

试试看! localStorage 可能已经成为一个全局变量(在页面的上下文中)并且根本没有指向真正的 localStorage

【讨论】:

  • 这根本没有任何作用。它甚至不将其添加到本地存储中。奇怪....
  • 您使用的是支持localStorage的浏览器吗?你能检查一下 if(window.localStorage){ alert('I have storage');}
  • 我正在使用谷歌浏览器,但我收到“我有存储空间”的警报。奇怪的是他添加了它,但是当我刷新它时它就消失了。
  • 这很奇怪,你能提供一个 jsfiddle 链接吗?似乎当您加载页面时,localStorage 发生了一些事情,例如从 localStorage 中删除属性
猜你喜欢
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 2021-03-19
  • 1970-01-01
  • 2011-12-07
  • 2017-06-03
  • 2023-04-08
相关资源
最近更新 更多