Giúp đỡ lỗi Ajax ko load được data từ cơ sở dữ liệu

Mình có upload code từ máy lên host nhưng bị lỗi ko load được phần lấy category để fill cho subcategory. Nhờ các bạn tìm giúp xem nó bị chỗ nào vậy. Tks nhiều!
Đây là đoạn Ajax mình thêm vào trong file themmoisanpham.php

<script>
$(document).ready(function(){    
    $.ajax({
        url: "https://abc.com/web/quantri/manage/dmSanPham/laytheloai.php",       
        dataType:'json',         
        success: function(data){     
            $("#tl").html("");
            for (i=0; i<data.length; i++){            
                var tl = data[i];
                var str = ` 
                    <option value="${tl['idtl']}">
                        ${tl['tentl']} 
                    </option>`;
                $("#tl").append(str);
            }
            $( "#tl").on("change", function(e) { layLoaiSanPham();  });
            $( "#tl").on("change", function(e) { layHangsanxuat();  });
        }
    });
})
</script>
<script>
function layLoaiSanPham(){
    var idtl = $("#tl").val();
    $.ajax({
        url: "https://abc.com/web/quantri/manage/dmSanPham/layloaisanphamtrongtheloai.php?idtl=" + idtl,
        dataType:'json',         
        success: function(data){     
            $("#lsp").html("");
            for (i=0; i<data.length; i++){            
                var lsp = data[i]; 
                var str = ` 
                    <option value="${lsp['idlsp']}">
                        ${lsp['tenlsp']} 
                    </option>`;
                $("#lsp").append(str);
            }
        }
    });
}
</script>

<script>
function layHangsanxuat(){
    var idtl = $("#tl").val();
    $.ajax({
        url: "https://abc.com/web/quantri/manage/dmSanPham/layhangsanxuattrongtheloai.php?idtl=" + idtl,
        dataType:'json',         
        success: function(data){     
            $("#hsx").html("");
            for (i=0; i<data.length; i++){            
                var hangsanxuat = data[i]; 
                var str = ` 
                    <option value="${hangsanxuat['idhsx']}">
                        ${hangsanxuat['tenhsx']} 
                    </option>`;
                $("#hsx").append(str);
            }            
        }
    });
}
</script>

Mình chạy dưới localhost thì không lỗi, không biết do đường dẫn hay cái phần kết nối host bị sai chỗ nào mà ko load được dữ liệu và lisbox.

$(document).ready(function(){    
    $.ajax({
        url: "https://abc.com/web/quantri/manage/dmSanPham/laytheloai.php",       
        dataType:'json',         
        success: function(data){     
            $("#tl").html("");
            for (i=0; i<data.length; i++){            
                var tl = data[i];
                var str = ` 
                    <option value="${tl['idtl']}">
                        ${tl['tentl']} 
                    </option>`;
                $("#tl").append(str);
            }
            $( "#tl").on("change", function(e) { layLoaiSanPham();  });
            $( "#tl").on("change", function(e) { layHangsanxuat();  });
        }
    });
})

function layLoaiSanPham(){
    var idtl = $("#tl").val();
    $.ajax({
        url: "https://abc.com/web/quantri/manage/dmSanPham/layloaisanphamtrongtheloai.php?idtl=" + idtl,
        dataType:'json',         
        success: function(data){     
            $("#lsp").html("");
            for (i=0; i<data.length; i++){            
                var lsp = data[i]; 
                var str = ` 
                    <option value="${lsp['idlsp']}">
                        ${lsp['tenlsp']} 
                    </option>`;
                $("#lsp").append(str);
            }
        }
    });
}
</script>

<script>
function layHangsanxuat(){
    var idtl = $("#tl").val();
    $.ajax({
        url: "https://abc.com/web/quantri/manage/dmSanPham/layhangsanxuattrongtheloai.php?idtl=" + idtl,
        dataType:'json',         
        success: function(data){     
            $("#hsx").html("");
            for (i=0; i<data.length; i++){            
                var hangsanxuat = data[i]; 
                var str = ` 
                    <option value="${hangsanxuat['idhsx']}">
                        ${hangsanxuat['tenhsx']} 
                    </option>`;
                $("#hsx").append(str);
            }            
        }
    });
}

Đây là nôi dung của 3 file cho các phần trên

$conn=new PDO("mysql:host=localhost;dbname=lfszsjls_kiemsoattruynhap;charset=utf8","lfszsjls_kiemsoattruynhap_user","abc258");
$stmt=$conn->prepare("SELECT idtl, tentl  FROM danhmuctheloai");    
$stmt->execute();    
$data  = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($data);


$idtl=0;
if (isset($_GET['idtl'])) $idtl = $_GET['idtl'];
settype($idtl, "int");
$conn=new PDO("mysql:host=localhost;dbname=lfszsjls_kiemsoattruynhap;charset=utf8","lfszsjls_kiemsoattruynhap_user","abc258");
$stmt=$conn->prepare("SELECT idlsp, tenlsp  FROM danhmucloaisanpham WHERE idtl=?");    
$stmt->execute([$idtl]);    
$data  = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($data);

Bạn code trên máy tính chạy hệ điều hành gì? Trước hết cẩn thận kiểm tra lại chữ thường/ HOA vì trên Windows tên file, thư mục không phân biệt thường hay HOA, nếu hosting của bạn Linux, nó phân biệt dmSanPham dmsanpham là khác nhau,

Thay vì để Ajax gọi, với GET bạn có thể gõ trực tiếp lên địa chỉ trình duyệt để check xem có gọi được hay không. Nếu không thì Ajax sẽ không là cái chắc. Với dạng method là POST thì bạn có thể dùng Postman hoặc reqbin để thử xem có gửi được dữ liệu lên không. Lên rồi thì khoan chèn vào DB mà var_dump ra xem thử được chưa, được rồi mới xem lại câu lệnh SQL lưu dữ liệu.

Các gỡ lỗi: bật F12 trên trình duyệt, chọn tab Network xem gọi Ajax có được không hay là lỗi 404 do tên file trên Linux phân biệt chữ thường/ HOA nên tìm không ra.

4 Likes

Ồ thì ra là trên hosting mình để cái thư mục chứa source code có tên web, mà thư mục này chính là địa chỉ trang web abc.com nên nó bị thừa ra.

Bỏ cái tên thư mục web thì ajax đã load được dữ liệu từ db mysql

Cảm ơn bạn rất nhiều nha!

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