SessionStorage, кажется, остается пустым - PullRequest
0 голосов
/ 06 сентября 2011

Я новичок в HTML5 / Javascript и думаю, у меня возникла концептуальная проблема.Я использую Aptana в качестве своей среды, и он использует FireFox для отладки браузера.

Вот код, о котором идет речь:

var req = new ContactRequest("Mister Peachy", "peach.png", "One Liner Message" );

sessionStorage.Requests = new Array();
sessionStorage.Requests[0] = req;

req = new ContactRequest("Anon Ymous", "person.png", "Another one line msg");

sessionStorage.Requests[1] = req;

Кажется, проблема в том, что sessionStorage.Requests всегдаравно "".Я пытался использовать .setItem, но это тоже не сработало.

Ответы [ 3 ]

2 голосов
/ 06 сентября 2011

Что вам нужно сделать, это привести в порядок ваши данные для хранения и проанализировать их для извлечения.Вот небольшой интерфейс, который я написал

App.session = (function () {
  var self = {};

  self.get = function (key) {
    var b = sessionStorage.getItem(key);
    return b ? JSON.parse(b) : null;
  }

  self.set = function (key, value) {
    var b = JSON.stringify(value);
    sessionStorage.setItem(key, b);
  }

  return self;
})();

var session = App.session;
session.set('foo', 'bar');
var bar = session.get('foo');
console.log(bar);
1 голос
/ 06 сентября 2011

Из документации ,

Каждый объект Storage предоставляет доступ к списку пар ключ / значение, которые иногда называют элементами.Ключи - это струны.Любая строка (включая пустую строку) является допустимым ключом. Значения аналогичны строкам.

Акцент добавлен.Вы не можете хранить объекты в sessionStorage.

Mozilla также имеет комментарии по этому поводу:

Примечание: хотя значения могут быть установлены и считаны через стандартРекомендуется использовать метод доступа к свойствам JavaScript методов getItem и setItem.

Примечание: имейте в виду, что все, что вы храните в любом из хранилищ, описанных на этой странице, перед сохранением преобразуется в строку через метод .toString.Таким образом, попытка сохранить общий объект приведет к сохранению строки «[object Object]» вместо объекта или его JSON-представления.Использование собственных методов анализа и сериализации JSON, предоставляемых браузером, является хорошим и распространенным способом хранения объектов в строковом формате.

1 голос
/ 06 сентября 2011

sessionStorage не может хранить объекты, он может хранить только строки.

Если вы хотите сохранить что-либо еще, вам придется использовать JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...