2011-02-03 44 views
1

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

我想将这个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

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

+0

那么,我看到JSON.stringify,它看起来像我要进入的方向。是否有这样一个常规的旧XML的野兽? – gdanko 2011-02-03 21:11:05

相关问题