Xin giúp đỡ xử lí phần giỏ hàng bằng ajax


Hàm currency_format của mình dùng để định dạng tiền tệ , nhưng khi mình sử dụng jquery để lấy dữ liệu price, sub-total,… thì vướng hàm currency_format nên chỉ lấy được số nguyên trước dấu , mà hàm currency_format định dạng , ai giúp mình làm thế nào để lấy hết số nguyên trên được ko ạ, vì mình muốn khi chưa thay đổi num-order thì sub-total hay total đều được định dạng tiền tệ,
Tiện thể cho mình hỏi làm sao khi thay đổi num-oder thì tổng tiền cuối cùng của mình chính xác dudojc ạ, mình làm mà khi thay đổi lên thì được,nhưng giảm num-order thì tổng tiền vẫn tăng

// code ajax đây ạ
$(document).ready(function(){
    $(".num-order").change(function(){
        var price = $(this).closest('tr').find('.price').text();
        var num_order = $(this).val();
        var total = $('#total-price').text();
//        alert(total);
        $data = {price:price ,num_order:num_order,total:total};
        
        
        var me = this;
        $.ajax({
            url : "?mod=cart&action=update",
            method: 'POST',
            data:$data,
            dataType: 'json',
            success: function(data){
                $(me).closest('tr').find('.sub-total').text(data.sub_total);
//                $('#total-price').text(data.total_new);
            },
        });
    });
// code xử lí php đây ạ
function updateAction(){
    $price = (int)$_POST['price'];
    $num_order = (int)$_POST['num_order'];
    $sub_total = $price * $num_order;
    
    $total_old = (int)$_POST['total'];
    $total_new = $total_old + $price;  // sai ạ
    $result = array(
        'sub_total' => currency_format($sub_total),
        'total_new' => currency_format($total_new),
    );
    echo json_encode($result);
}

1

Dữ liệu chuyển qua ajax thì nên đơn giản hóa. Chỉ cần số là được rồi, việc gì phải định dạng chi nữa.
Phần hiển thị trên trang thì bạn dùng javascript xử lý định dạng cho nó. Tự viết, cũng đơn giản thôi.
Và điều này (hình như mình có nói rồi): Đừng lấy giá trị trực tiếp từ thẻ HTML. Hãy dữ liệu hóa chúng, và được “giấu” đi.

order[0] = {price: 10000, num_order: 4, currency_unit: "VND"}
//...

Hiển thị trên HTML (đã qua xử lý javascript):

Price: 10,000 VND
Quantity: 4
Sub Total: 40,000 VND

Bắt sự kiện thay đổi giá trị thì xét hợp lệ và cập nhật nó vào dữ liệu đã có rồi xử lý sau.
Khi gọi ajax thì chỉ lấy nó từ dữ liệu đã có, không phải “chôm” từ HTML.

2

Vấn đề là nó thay đổi tăng lên thì cộng thêm. Nhưng giảm xuống thì tất nhiên là trừ bớt đi. Đằng này bạn toàn cộng.

Mà nếu xử bên php chỉ đơn giản là + - * / thì bạn cho javascript xử lý luôn cho xong.

3 Likes

Dạ e cảm ơn a ạ, dạ do chắc mấy cái này e học sơ qua nên a nói e ko hiểu cho lắm , e sẽ cố làm ạ, e cảm ơn ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?