我试图将通过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不会出现。
发布于 2015-02-04 08:25:38
您要在cookie中添加的值对于cookie来说太大了。曲奇限制在4k左右。其中一部分用于存储管理,一部分是因为每个对服务器的请求都会发送所有的cookie。如果您存储了一个9MB的cookie,那么您将向该服务器发送额外的9MB和每个页面或ajax请求,这显然是一场灾难。
LocalStorage是另一个具有更大存储限制的选项,它仍然在每个域上进行分区,并且在每个请求中向服务器发送大型东西没有问题。
如果LocalStorage也不够大,那么您可以开始考虑只包含IndexedDB之类内容的现代浏览器,您可以阅读这里。
你可能需要一种不同的设计方法。我们可能会为另一种方法提供帮助,但必须了解您要解决的总体问题,以及为什么您需要在本地存储9MB,并且在将来需要时不能直接从服务器上检索它?
https://stackoverflow.com/questions/28316115
复制相似问题