2016-08-08 4 views
0

クッキーからショッピングカートを保存するローカルストレージ機能を作成しましたが、別のマシンでこのページにアクセスしようとするとエラーになります。これらの関数にフォールバックを追加するにはどうすればよいのでしょうか。コードをサーバーや他のマシンでローカルで見ると、そこでも動作し、基本的に新しいクッキーを保存します。ローカルストレージのクッキーが戻ってくる

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


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

これは、それは、カートがNULLの場合、エラーメッセージ、Cannot read property 'push' of null

+1

エラーは何ですか? – Archer

+0

ヌルのプロパティ 'push'を読み取ることができません – charlie97

+0

'push()'を使うことは何もないので、何が原因なのかを正確に伝えることはできません。問題のマシンで 'localStorage'が不足している可能性がありますが、もっと調査する必要があります。コンソールを開き、 'typeof localStorage'と打ってみましたか? 'object'を取得した場合、それは問題ではありません。 – Archer

答えて

0

がprobeblyあなたのカートでのlocalStorage チェックにnullの原因...

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(); 
}; 

問題が発生するコードです新しい配列に設定する

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

これはうまくいきましたが、IEで動かすと、このエラーが表示されます:未定義またはnull参照のプロパティ 'setItem'を取得できません – charlie97

+0

これは他のブラウザでも動作するIEで問題になることがあります。 –

+0

見つけました。 IE 10には問題があります。ソリューションはこちらhttp://stackoverflow.com/a/21372954/5409081 –

0

あなたはtは鍵がローカルストレージに存在していることを確認する必要があります -

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

ローカルストレージは、それぞれのためにあなたにshoppingCartCookieを格納するための最初の必要性をmacjineので、それからだけあなたがそれにアクセスできるようになり、マシン固有のものです。

希望すると、これが役立ちます。

関連する問題