XMLHttpRequest数据可以存储在localStorage中吗?

时间:2011-02-03 14:42:37

标签: javascript html5 local-storage safari-extension

我正在编写一个Safari扩展,它使用jQuery.ajax为一些XML数据创建XMLHttpRequest。如果我在过程数据函数中执行console.log(data),我会得到一个可以遍历的项目Document。

我想将这个ajax数据存储在localStorage中。所以在processDocument函数的前几行我有这个:

function processResponse(data) {
    localStorage.removeItem("myData");
    localStorage.setItem("myData", data);
    console.log('post-load: there are ' + localStorage.length + ' items in the local storage array.');
    console.log("post-load data: " + data);
    console.log("post-load myData: " + localStorage.myData);

console.log会告诉我:
后加载:本地存储阵列中有1个项目 后载数据:[对象文件]
后加载myData:[对象文档]

所以看起来我这里有有效的数据。但是当响应工具栏上的按钮时,messageHandler函数也会轮询本地存储,如下所示:

console.log('There are ' + localStorage.length + ' items in the local storage array.');
for (var x = 0; x < localStorage.length; x++) {
    console.log(x + ": " + localStorage[x]);
}
if (localStorage.myData == undefined) {
    console.log("myData is undefined");
    doSomething();
} else {
    console.log("myData is defined");
    doSomethingElse();
}

此处的控制台日志将显示:
本地存储阵列中有1个项目 0:未定义
myData定义为

为了在localStorage中正确存储这些XML数据,我需要做些什么吗? localStorage不应该保留此对象的完整性吗?也许我在这里错过了一些东西。

1 个答案:

答案 0 :(得分:1)

尽管您的初始调试输出似乎告诉您,本地存储不存储它存储字符串的对象。要获取XML,您应该将其存储为字符串,然后在检索字符串时将其解析回XML。 This answer describes one approach,您可能需要专门针对XML进行调整。