将 javascript 变量的值保存在浏览历史记录中

Keeping javascript variable's values in a browsing history

本文关键字:浏览 历史 记录 存在 保存 javascript 变量      更新时间:2023-09-26

我正在制作一个用javascript生成内容的网站。我有一个关于简单代码的问题。有一个 php 文件 rand.php:

<?php echo rand(1,5); ?>

和小的 html/JavaScript 代码

<a href="rand.php">rand.php</a>
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript">
    (function($) {
        var obj = { 'title':'MyVal', 'value':0 };
        document.write(obj.title+': '+obj.value);
        //i don't want to get ajax-request if i go back of the history to here
        //only if i click link to here a first time, and here
        //i want to see a random number in [1,..,5] from a last visiting
        $(document).ready(function() {
            $.ajax({
                type: 'POST',
                url: 'rand.php',
                async: false,
                data: {},
                success: function(nr) {
                    obj.value = nr;
                }
            });     
        });
    })(jQuery);
</script> 

问题是,如果我点击一个 rand.php -link 然后我返回,但如何从上次访问中保留 obj-JSON 的值,而不是获得新的 ajax 请求。谢谢!

您可以使用 localStorage 在每个客户端的基础上保留持久值,而无需使用 Cookie。与 cookie 相比,这种方法的优点是,使用 cookie,值会随每个请求一起发送。您最终会来回穿梭您甚至可能不需要的数据,并且可能会无意中在服务器端修改或覆盖cookie。

要使用本地存储,您只需使用 getItemsetItem 引用 localStorage 对象即可分别获取和设置数据。如果您预计支持较老的客户,建议获取填充程序,或者您可以使用 cookie 作为后备程序滚动自己的填充程序。

文档

  • MDN 上的本地存储 - https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage?redirectlocale=en-US&redirectslug=Web%2FGuide%2FDOM%2FStorage#localStorage
  • MSDN 上的本地存储 - http://msdn.microsoft.com/en-us/library/ie/cc848902%28v=vs.85%29.aspx

这在很大程度上取决于您需要支持的浏览器,但是在最近的浏览器中,本地存储得到了很好的支持。文档在这里:

存储对象