2016-08-08 3 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")); 
}; 

은 문제를 일으키는 코드 ... 그것은 오류 메시지가 발생

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

, 카트 다음 null의 경우

+1

무엇이 오류입니까? – Archer

+0

null의 'push'속성을 읽을 수 없음 – charlie97

+0

'push()'를 사용하여 아무 것도 없으므로 그 원인을 정확히 알 수 없습니다. 문제의 기계에'localStorage'가 부족한 것 같지만 좀 더 조사해야합니다. 콘솔을 열고'typeof localStorage'라고 타이핑 했습니까? 'object'를 얻으면 문제가되지 않습니다. – Archer

답변

0

Cannot read property 'push' of null이 probebly 장바구니가 로컬 스토리지 검사의 null 새 배열로 설정

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위한, 그래서 만 해당 액세스 할 수 있습니다, 기계 다릅니다.

희망이 도움이 될 것입니다.