Могут ли данные XMLHttpRequest храниться в localStorage? - PullRequest
1 голос
/ 03 февраля 2011

Я пишу расширение Safari, которое создает запрос XMLHttpRequest для некоторых данных XML с использованием jQuery.ajax. Если я выполняю 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 определен

Что мне нужно сделать, чтобы правильно хранить эти XML-данные в localStorage? Разве localStorage не должен сохранять целостность этого объекта? Возможно, я что-то здесь упускаю.

1 Ответ

1 голос
/ 03 февраля 2011

Несмотря на то, что ваш первоначальный вывод отладки, кажется, говорит вам, локальное хранилище не хранит объекты, оно хранит строки. Чтобы вернуть XML, вы должны сохранить его как строку, а затем проанализировать строку обратно в XML при получении. Этот ответ описывает один подход , возможно, вам придется адаптировать его специально для XML.

...