Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript XMLHttpRequest数据可以存储在localStorage中吗?_Javascript_Html_Local Storage_Safari Extension - Fatal编程技术网

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

Javascript XMLHttpRequest数据可以存储在localStorage中吗?,javascript,html,local-storage,safari-extension,Javascript,Html,Local Storage,Safari Extension,我正在编写一个Safari扩展,它使用jQuery.ajax为一些XML数据生成XMLHttpRequest。如果我在processdata函数中执行console.log(data),我会得到一个可以遍历的条目文档 我想将此ajax数据存储在localStorage中。因此,在processDocument函数的前几行中,我有: function processResponse(data) { localStorage.removeItem("myData"); localSt

我正在编写一个Safari扩展,它使用jQuery.ajax为一些XML数据生成XMLHttpRequest。如果我在processdata函数中执行console.log(data),我会得到一个可以遍历的条目文档

我想将此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();
}
console.log('本地存储阵列中有'+localStorage.length+'项');
for(var x=0;x
此处的控制台日志将显示:
本地存储阵列中有1个项目。
0:未定义
myData已定义


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

尽管您最初的调试输出似乎告诉您,本地存储并不存储对象,而是存储字符串。要恢复XML,应将其存储为字符串,然后在检索时将字符串解析回XML,您可能需要专门针对XML对其进行调整。

尽管最初的调试输出似乎告诉您,本地存储并不存储对象,而是存储字符串。要恢复XML,应将其存储为字符串,然后在检索时将字符串解析回XML,您可能需要专门针对XML对其进行调整。

好吧,我看到了JSON.stringify,它看起来就是我要走的方向。对于常规的旧XML是否存在这样的问题?var string=(新的XMLSerializer()).serializeToString(数据)@user589254 XML解析就是其中之一,您可能需要研究一些轻量级AJAX库。对于常规的旧XML是否存在这样的问题?var string=(新的XMLSerializer()).serializeToString(数据)@user589254 XML解析就是其中之一,您可能需要研究一些轻量级AJAX库。