2016-11-07 3 views
1

Ich habe ein Objekt, das ich bekomme, indem ich eine Funktion des SDK ausführe. Wenn ich versuche, das Objekt im Sitzungsspeicher zu speichern und das Objekt abzurufen, sieht das abgerufene Objekt genauso aus wie das Original, aber wenn ich Operationen für das neue Objekt durchführe, erhalte ich einen Fehler.sessionStorage speichert kein Originalobjekt

var xyzObject = some_function(); 

sessionStorage.setItem("xyzObject",xyzObject); 

var obj = JSON.parse(sessionStorage.getItem("xyzObject")); 

obj.some_other_function(); 

Es ist ein Fehler, wie obj.some_other_function zeigt, ist keine Funktion. Wobei xyzObject.some_other_function perfekt funktioniert.

+0

Die [Web Storage-API] (https://developer.mozilla.org/en-US/docs/Web/API/Storage) nur Strings unterstützt: [ 'storage.setItem (keyName, keyValue)' ] (https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem) Dabei sind 'keyName' und' keyValue' ['DOMString'] (https://developer.mozilla.org/de-DE/docs/Web/API/DOMString) s – Andreas

+0

Versuchen Sie JSON.stringify, wenn Sie das Objekt speichern. Sie können es nur als Zeichenfolge speichern. – juju

Antwort

1

Versuchen

sessionStorage.setItem('xyzObject', JSON.stringify(xyzObject); 

und abrufen mit:

JSON.parse(sessionStorage.getItem('xyzObject')); 
+0

Ich verwende nur die obige Implementierung. –

1

Sie können ein Objekt in der session oder localstorage nicht speichern. Die einzige mögliche Methode besteht darin, das Objekt zu stringieren und das in sessionStorage zu speichern. Wenn Sie das Objekt von sessionStorage empfangen, parsen Sie das Objekt einfach zu JSON.

var xyzObject = some_function(); 

sessionStorage.setItem("xyzObject",JSON.stringify(xyzObject)); 

var stringData = sessionStorage.getItem("xyzObject"); 

var obj = JSON.parse(stringData); 

obj.some_other_function(); 
+0

bereits oben implementiert .. noch sind die Objekte nicht gleich .. –

Verwandte Themen