2016-08-08 41 views
0

Ich habe eine lokale Speicherfunktion zum Speichern und Laden des Einkaufswagens aus den Cookies erstellt, aber wenn ich versuche, diese Seite auf einem anderen Computer zuzugreifen, gibt es mir einen Fehler. Wie füge ich diesen Funktionen einen Fall zurück, damit der Code, wenn er auf einem Server oder einem anderen Rechner lokal angezeigt wird, auch dort funktioniert und grundsätzlich neue Cookies speichert.Local Storage Cookies fallen

ShoppingBasket.saveCart = function() { 
    localStorage.setItem("shoppingCartCookie", JSON.stringify(this.cart)); 
}; 


// function to load cart 
ShoppingBasket.loadCart = function() { 
    this.cart = JSON.parse(localStorage.getItem("shoppingCartCookie")); 
}; 

Dies ist der Code, der das Problem ...

ShoppingBasket.addItemToCart = function(name, price, count) { 
    for (var i in this.cart) { 
     if (this.cart[i].name === name) { 
      this.cart[i].count += count; 
      this.saveCart(); 
      return; 
     } 
    } 
    var item = new this.Item(name, price, count); 
    this.cart.push(item); 
    this.saveCart(); 
}; 

Es die Fehlermeldung verursacht verursacht, Cannot read property 'push' of null

+1

Was ist der Fehler? – Archer

+0

Eigenschaft 'push' von null kann nicht gelesen werden – charlie97

+0

Es gibt nichts mit 'push()', so dass Sie nicht genau sagen können, was das verursacht. Es ist wahrscheinlich ein Mangel an "localStorage" auf der fraglichen Maschine, aber Sie müssen mehr untersuchen. Haben Sie versucht, die Konsole zu öffnen und tippen Sie einfach 'typeof localStorage'? Wenn Sie "Objekt" erhalten, ist das nicht das Problem. – Archer

Antwort

0

probebly Warenkorb in localstorage Check null ist, wenn Warenkorb null, dann ist setze auf neues Array

ShoppingBasket.loadCart = function() { 
    this.cart = JSON.parse(localStorage.getItem("shoppingCartCookie")) || []; 
}; 
+0

Vielen Dank das funktionierte, aber wenn ich es im IE ausführen, gibt es mir diesen Fehler: Kann 'SetItem' von undefined oder null Referenz nicht erhalten – charlie97

+0

Dies kann auch mit IE auftreten, wenn es in anderen Browsern funktioniert. –

+0

Es gefunden. Es gibt ein Problem auf IE 10 .. hier ist die Lösung http://stackoverflow.com/a/21372954/5409081 –

0

Sie Tannen t müssen prüfen, ob der Schlüssel im lokalen Speicher vorhanden ist -

if ("shoppingCartCookie" in localStorage) { 
//Your logic 
}else{ 
//Your logic to create cookie 
} 

Der lokale Speicher ist bestimmte Maschine, so dass für jeden müssen Sie zuerst macjine die shoppingCartCookie speichern, dann nur werden Sie in der Lage sein, zuzugreifen.

Hoffe, das wird Ihnen helfen.