2012-12-17 2 views
1

쇼핑 웹 사이트가 있으며 자바 스크립트를 사용하여 장바구니에 항목을 추가하고 있습니다. 장바구니에 추가를 클릭 할 때마다 장바구니를 나타내는 div에 해당 항목의 이름이 표시됩니다. 나는 각 페이지에 카트의 내용을 유지하려면, 그래서 내가 한 것은 다음과 같습니다자바 스크립트 및 PHP 사용

$("#cartlink").attr("href", "cart.php?app="+tab+"") 

경우 "탭"카트의 모든 항목을 포함하는 배열입니다. 그런 다음 GET을 사용하여 cart.php 페이지에서 장바구니의 요소를 검색합니다. 하지만 내 문제는 사용자가 cart.php? app 링크를 클릭하지 않고 페이지를 변경하면 탭을 지우고 "탭"을 복구 할 방법이없는 JS를 사용하여 장바구니에 항목을 추가 한 이후입니다. 사용자가 cart.php 링크를 클릭하면 GET을 사용하여 세션에 내용을 저장 한 다음 모든 페이지에서 사용할 수 있습니다.

그래서 사용자가 cart.php를 클릭하지 않기로 결정하면 장바구니 콘텐츠를 기억할 방법이 필요합니다.

감사합니다.

+1

세션, 쿠키 또는 로컬 저장소 – thescientist

답변

0

localStorage을 사용하여 장바구니 상태를 JavaScript에 저장하고 사용자가 주문을 확인하면 서버에 제출할 수 있습니다.

0

나는 완전히 당신이있어 이해 클라이언트 측에서 데이터를/저장, 검색 할 수있는 쉬운 방법을 제공합니다 하지만, 페이지가 언로드되기 전에 호출되는 윈도우의 beforeunload 이벤트에 리스너를 바인딩 할 수있는 것처럼 들립니다 (위치가 변경됨). 이것은 웹 사이트 (팝업 광고)가 "떠나시겠습니까?"대화 상자를 표시하는 방법입니다.

예 : 당신이 beforeunload 이벤트를 취소 할 수 없기 때문에, HTTP의 요청이 실패하면 이후 단지, 대신 아약스 호출을의 쿠키를 업데이트하는 것이 안전 할 수 있다는

window.document.addEventListener('beforeunload', function(event) { 
    $.ajax({ url: '/saveCart.php', data: tab, 
     success: function(){ 
     }, 
     error: function(data) { 
     } 
    }); 
}, false); 

주 페이지가 여전히 언로드됩니다. Here's a really good primer on setting cookies.

정말 간단한 솔루션은 beforeunload 청취자에 문자열을 반환하는 것입니다. 그러면 "장바구니가 저장되지 않습니다."와 같은 내용의 확인 대화 상자가 생성됩니다. '장바구니 저장'을 클릭하여 저장하십시오. 그래도 최고의 UX는 아니다.