2011-04-06 1 views
0

항목 목록이 있고 추가 버튼을 클릭했다고합시다. 항목 이름이 바구니 상자에 추가됩니다.카트 바구니 업데이트 - 아약스 또는 아약스없이?

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

1) 추가 버튼을 클릭하면 항목 데이터가 ajax를 통해 장바구니 세션에 추가 된 다음 ajax를 통해 바구니 상자가 다시 표시됩니다.

2) 숫자 1과 같지만 카트 세션 대신 DB 카트 테이블에 추가 하시겠습니까?

3) Ajax가 없으면 추가 버튼을 클릭하면 자바 스크립트를 통해 새 요소/태그가 바구니 상자에 생성됩니다. 항목 이름과 가격이 추가됩니다. 바구니 상자의 하단에는 "진행"버튼이 있습니다. 진행 버튼을 클릭하면 장바구니 요소/태그의 데이터를 세션 또는 데이터베이스에 저장합니다. jQuery를 사용하여 요소 항목 및 가격 값을 얻는 방법은 무엇입니까?

4) 또는 귀하의 솔루션은 무엇입니까?

+1

생각을위한 음식 : Ajax 방법을 지원하는 것이 가장 좋지만 비 Javascript 방법도 지원하는 것이 가장 좋습니다. 보안 (또는 기타) 이유로 Javascript가 사용 중지 된 사용자가 제대로 성능을 저하 시키길 원합니다. – Guttsy

+0

^이것이 공용 웹 애플리케이션의 일부 양식이라면 동의합니다. Ajax/JavaScript 접근 방식과 PHP 접근 방식을 모두 제안 해 보겠습니다. –

답변

1

장바구니 관리와 관련된 모든 종류의 문제에 대한 일반적인 해결책은 없습니다. 누구나 어디서나 볼 수있는 보편적 인 솔루션입니다. 그러나 테스트되고 잘 작동하는 디자인 패턴이 있습니다. 또한 내 소프트웨어와 함께 어떤 모델을 사용하고 있는지 알 수 있습니다.

각 가격 수정, 할인, 프로모션 코드는 원래 제품 가격을 수정할 수 있음을 알아야합니다. 자바 스크립트를 사용하여 계산하는 것은 덜 안정적이고 신뢰할 수 없습니다. 장바구니에 할당 된 정보를 반환하는 신뢰할 수있는 방법이 하나 또는 몇 가지 있어야합니다 (예 :

class Cart { 
    public function getTotalGrossPrice() { ... } 
    public function getTotalNetPrice() { ... } 
} 

세금이 추가되었거나 둘째로 ajax를 사용하여 JavaScript에서 관리해야합니다. JSON 형식으로 모든 데이터를 가져 오는 것이 좋습니다. 에

$.getJSON('/cart/getTotalGrossPrice.html');

봐 : 당신은 카트 총 가격을 얻을 수있는 하나 개의 방법이있는 경우는 간단하다 http://api.jquery.com/jQuery.getJSON/

귀하의 웹 사이트에 사방을 가져올 수 있습니다. 프로모션 코드와 같은 새로운 기능을 도입하면 클래스와 같은 중심적인 위치에있을 때 고통 스러울 것입니다. 자바 스크립트로 가격이 계산되는 웹 사이트가 거의 없다고 생각해보십시오. 실수로 편집 할 때 실수를 저지르는 것이 간단합니다.

http://yuml.me/8317d38

이 모델은 API 스키마과 같이 구현 구조를 가진 웹 사이트에 일반적입니다.

아마도 도움이 될 것입니다. 행운을 빈다.

+0

자세한 답변 해 주셔서 감사합니다. 매우 도움이되었습니다. 그냥 빠른 질문. 나는 카트 데이터를 저장하기 위해 $ _SESSION을 사용할 필요가 없습니다. 카트 클래스에 간단하게 저장할 수 있습니까? – user622378

+0

예를 들어 MySQL과 같이 데이터베이스에 카트를 저장해야합니다. 클래스는 바구니 세부 정보를 가져 오는 데 도움이되는 추상화 일뿐입니다. Ajax 요청은 DB에 데이터를 요청하는 클래스 추상화를 호출해야한다. $ _SESSION에 제품을 저장하는 것은 좋은 생각이 아닙니다. 고객이 세션을 중단 할 때 데이터가 빠르게 커질 수 있고 데이터를 저장하지 않기 때문입니다. –

0

나는 AJAX가 덜 부르면 좋을 것이라고 생각합니다. 4 번째 솔루션 (# 4)을 선택했습니다. 기본적으로 항목에 다음과 같은 몇 가지 HTML 숨겨진 필드를 추가하려면 (jQuery를 여물) 수를 클릭 :

<div id="item-list" style="display: none;"> 
    <div class="item" id="12345"></div> 
    <div class="item" id="12346"></div> 
    ... 
</div> 

을 한 후 "진행"버튼을 만든 후 모든 것을 처리합니다. 그게 적어도, 내가 할 것입니다.

이 응답 :

어떻게 요소 항목 및 가격 값을 얻기 위해 jQuery를 사용할 수 있습니까?

그냥 가격 필드에서 가져 와서 현재 가격을 표시해야합니다. 그러나 HTML 페이지 나 자바 스크립트에 가격을 저장하는 것을 피할 수 있습니다. PHP 스크립트가 제품의 목록을 보내는 실제 가격을 계산하는 것이 좋습니다.

+0

HTML 숨김 필드 란 무엇입니까? 감사합니다 – user622378

+0

@ user622378을 명확히하십시오, 그들은 AJAX 요청을 통해 쉽게 보낼 수 있도록 선택한 항목을 저장합니다. – Shoe

0

가장 좋은 방법은 AJAX를 통해 서버로 왕복 여행을하고 바구니의 HTML을 다시 보내는 것입니다. HTML은 너무 작아서 AJAX 오버 헤드가 더 많은 시간이 걸릴 것이지만 가격 결정권을 얻으려면 서버 측 로직을 사용해야합니다.

비 자바 스크립트의 경우 품질 저하가 중요한 경우 페이지 전체를 새로 고칩니다.