成功进行AJAX调用后,在jQuery Cookie中存储JSON数据

时间:2015-02-04 07:49:14

标签: javascript jquery ajax json cookies

我正在尝试将我通过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();记录到控制台时,我的cookie名为Name,但test-data没有。

对此有任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

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

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

如果LocalStorage也不够大,那么您可以开始只考虑包含类似IndexedDB的现代浏览器,您可以阅读here

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