Ken Phan's Blog

Ken Phan Blog
load ...
Anger
Cry
Glad
Happy
Laugh
Quiet
Sad
Silence
Tongue
Undecided
Wink
Trao yêu thương để nhận thương yêu
"To the world you may be one person, but to one person you may be the world ..."

Buôn chuyện

00 / 00
Ken Phan's Blog [kenphan.info] Ken Phan's Blog [kenphan.info] Ken Phan's Blog [kenphan.info] Ken Phan's Blog [kenphan.info] Ken Phan's Blog [kenphan.info] Ken Phan's Blog [kenphan.info]
Bạn đang ở » Trang chủ » Thủ thuật » Hướng dẫn dùng AJAX (jQuery) & PHP tạo giỏ hàng (drag & drop)

Hướng dẫn dùng AJAX (jQuery) & PHP tạo giỏ hàng (drag & drop)

Viết lúc 11:22 ngày 29/03/2010 bởi Administrator .

Ở bài viết trước (Hướng dẫn dùng AJAX (jQuery) & PHP tạo giỏ hàng), chúng ta đã tạo ra một giỏ hàng đơn giản sử dụng AJAX và PHP. Lúc đó và cũng có thể là gần đây, có rất nhiều bạn đã hỏi mình cách sử dụng drag & drop cho giỏ hàng nhưng mình vẫn chưa có thời gian để viết bài hướng dẫn. Bây giờ, khi đã rảnh rỗi một tý và để đáp lại những câu hỏi đó, trong bài viết này, mình sẽ hướng dẫn bạn nâng cấp giỏ hàng sang drag & drop nhưng vẫn giữ nguyên base core ban đầu.

Hướng dẫn dùng AJAX (jQuery) & PHP tạo giỏ hàng (drag & drop)

Nếu bạn chưa đọc bài viết trước thì vui lòng xem trước khi đọc tiếp bài viết này: Hướng dẫn dùng AJAX (jQuery) & PHP tạo giỏ hàng.

Trước hết, bạn cần mở file index.html ra và chuyển jQuery Lib của chúng ta sang phiên bản 1.4.2 và thêm vào là bộ UI của jQuery (mượn tạm file của anh Gồ vậy )

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>

Mọi việc vẫn diễn ra như bình thường, tiếp tục mở file jquery.cart.js ra và sửa tất cả thành:

$(document).ready(function(){
    // for add item to cart
    $('[rel=addToCart]').click(function(){
        addToCart($(this));
    });
    // event drag - drop
    $('[rel=addToCart] img').draggable({
        containment: 'document',
        opacity: 0.6,
        revert: 'invalid',
        helper: 'clone',
        zIndex: 100
    });
    $("#cart").droppable({
        drop: function(e, ui) {
            addToCart($(ui.draggable).parent());
        }
    });

    function addToCart (_seft) {
        var _url = _seft.attr('href');
        $.ajax({
            url: _url,
            type: 'get',
            dataType: 'json',
            beforeSend: function (){
                _seft.parent().parent().find('.busy').show();
            },
            success: function(db) {
                _seft.parent().parent().find('.busy').hide();
                $('#totalItems').html(db.total);
                $('#totalPrice').html(db.price);
            }
        });
        return false;
    }
    /* .......................................................................... */
    // for remove all cart
    $('[rel=removeAllCart]').click(function(){
        var _seft = $(this);
        var url = _seft.attr('href');
        $.ajax({
            url: url,
            type: 'get',
            dataType: 'html',
            beforeSend: function (){
                _seft.parent().parent().parent().find('.busy').show();
            },
            success: function(db) {
                _seft.parent().parent().parent().find('.busy').hide();
                $('#totalItems').html('0');
                $('#totalPrice').html('$0');
            }
        });
        return false;
    });
});

Nhìn vào đoạn mã trên, mọi thứ vẫn như xưa chả có gì thay đổi. Tớ chỉ tạo ra 1 function addToCart() để sử dụng lại mà thôi. Và mình thêm vài dòng nữa nhằm giúp cho các items product có event drag và drog. Đây là đoạn mã mới:

// event drag - drop
$('[rel=addToCart] img').draggable({
    containment: 'document',
    opacity: 0.6,
    revert: 'invalid',
    helper: 'clone',
    zIndex: 100
});
$("#cart").droppable({
    drop: function(e, ui) {
        addToCart($(ui.draggable).parent());
    }
});

Đoạn mã đầu tiên sẽ cho browser biết là thẻ image con của thằng attrubute rel == addToCart có thể drag được.

$('[rel=addToCart] img').draggable();

Còn mấy cái option thì bạn xem ở đây: http://docs.jquery.com/UI/Draggable.

Tiếp đến, các bạn phải viết event cho browser biết được rằng bạn kéo cái item product đến chỗ nào và có drop chính xác vào giỏ hàng không chứ hén ? Và cái thằng này sẽ làm nhiệm vụ đó:

$("#cart").droppable({ ... })

Trong option này chúng ta có dop: function (){...} hàm này sẽ được thực thi khi bạn thả item product bạn muốn mua vào giỏ hàng. (nhớ là lúc thả ra mới có hiệu lực nhé). Hàm này nhận vào 2 tham số là event và UI. Và phần tiếp theo của bạn chỉ việc gọi cái function addToCart để thực thi add giỏ hàng thôi.

Tác giả: Ken Phan (http://kenphan.info).

Cảm nhận của mọi người

  • HieuVT
    bài viết rất hay.
    Bạn có thể viết thêm về giỏ hàng khi khách mua hàng bấm vào sản phẩm thì sản phẩm sẽ chạy vào giỏ hàng được không ?
    Posted at 2 years . Reply
    + 15 points . Good . Bad
  • nguyen vinh hoa
    Sao Link đến bài viết tạo giỏ hàng đầu tiên,cơ bản ko được vậy bạn.Bạn Kiểm tra lại dùm nha bạn!Thanks
    1 Replies. Posted at 1 year . Reply
    + 15 points . Good . Bad
  • phit
    Ken ơi! Link demo và download die hết rồi!? Cậu xem lại nhé?
    Posted at 7 months . Reply
    + 15 points . Good . Bad