繁体   English   中英

成功调用 AJAX 后将 JSON 数据存储在 jQuery cookie 中

[英]Storing JSON data in jQuery cookie after successful AJAX call

我正在尝试将通过 AJAX 检索的 JSON 数据存储在 jQuery cookie 中。 我正在使用以下插件: https : //github.com/carhartl/jquery-cookie来实现这一点。 当我存储非 JSON 对象时,该插件效果很好。

我可以看到它在存储简单字符串时运行良好。 但是,当我尝试存储从 AJAX 调用中获取的 JSON 数据时,cookie 没有保存。 这是我的相关代码:

        $.ajax({
            dataType: "json",
            url: "http://www.example.com/sandbox/BF/context/messagesNew.php",
            success: function(data) {
            
                //This works
                $.cookie('Name', 'John');
                console.log($.cookie('Name'));
              
                //This does not work
                $.cookie("test-data", JSON.stringify(data));
                var myJSONCookie = JSON.parse($.cookie("test-data"));
                console.log(myJSONCookie); // Returns error in console: SyntaxError: JSON Parse error: Unexpected identifier "undefined"
            }
        });

我已经尝试了其他几个代码片段,但没有一个能正常工作。 我什至不认为test-data是作为 cookie 创建的,因为当我记录整个$.cookie(); 到控制台,我的名为Name cookie 出现,但test-data没有。

您尝试放入 cookie 的值对于 cookie 来说太大了。 Cookie 限制在 4k 左右。 一部分用于存储管理,另一部分是因为对服务器的每个请求都会发送所有 cookie。 如果您存储了一个 9MB 的 cookie,那么您将在每个页面或 ajax 请求中向该服务器发送额外的 9MB,这显然是一场灾难。

LocalStorage 是另一个选项,它具有更大的存储限制,仍然按域进行分区,并且不会在每次请求时向服务器发送大量内容的问题。

如果 LocalStorage 也不够大,那么您可以开始仅考虑包含诸如 IndexedDB 之类的内容的现代浏览器,您可以在 此处阅读。

您可能需要不同的设计方法。 我们可能可以帮助提出不同方法的想法,但必须了解您试图解决的总体问题以及为什么需要在本地存储 9MB 并且不能在将来需要时仅从服务器检索它?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM