Jquery AJAX không hoạt động khi xài lọc dữ liệu

Em có dùng Jquery AJAX để cuộn dữ liệu nối tiếp nhau và em viết thêm 1 điều kiện if-else cho lọc dữ liệu là kiểm tra nếu trong 2 cái input text có giá trị thì sẽ lấy 2 giá trị đó vào hàm SQL lọc dữ liệu trong tầm giá còn không thì sẽ chạy ra tất cả. Nhưng khi hoạt động thì nó chỉ chạy lệnh else mà không chạy lệnh if. Em mong được giúp đỡ ạ em cảm ơn.

<body>
    <form action="" method="GET">
            <div class="filter-row">
                <div class="filter">
                        <label for="">Start Price</label>
                            <input type="text" name="start_price" value="<?php if(isset($_GET['start_price'])){echo $_GET['start_price']; }else{echo "";} ?>" class="form-control">
                </div>
                    <div class="filter">
                        <label for="">End Price</label>
                            <input type="text" name="end_price" value="<?php if(isset($_GET['end_price'])){echo $_GET['end_price']; }else{echo "";} ?>" class="form-control">
                    </div>
                    <div class="filter">
                            <button type="submit" class="btn-filter">Filter</button>
                    </div>
            </div>
    </form>
    <div id="load_data"></div>
    <div id="load_data_message"></div>
    <script>
    $(document).ready(function() {
        var limit = 3;
        var start = 0;
        var action = 'inactive';
 function load_data(limit, start)
        {
            $.ajax({
            url:"fetch.php",
            method:"GET",
            data:{limit:limit, start:start},
            cache:false,
            success:function(data)
        {
            $('#load_data').append(data);
            if(data == '')
                {
                    $('#load_data_message').html("<button type='button' class='btn-load'>No Data Found</button>");
                    action = 'active';
                }
            else
                {
                    $('#load_data_message').html("<button type='button' class='btn-warning'>Please Wait</button>");
                    action = 'inactive';
                }
           
        }
        });
 }
    if(action == 'inactive')
    {
        action = 'active';
        load_data(limit, start);
    }
        $(window).scroll(function(){
            if($(window).scrollTop() + $(window).height() > $("#load_data").height() && action == 'inactive')
                {
                    action = 'active';
                    start = start + limit;
                    setTimeout(function(){ load_data(limit, start);}, 1000);
                }
        });
 });
    </script>
</body>

Còn đây là file fetch.php

<?php
if(isset($_GET["limit"], $_GET["start"]))
{
    require 'connection.php';
    if(!empty($_GET['start_price']) && !empty($_GET['end_price']))
    {
         $startprice = $_GET['start_price'];
         $endprice = $_GET['end_price'];
         $query = "SELECT * FROM car c JOIN carType ct WHERE c.typeid=ct.typeid AND ct.price BETWEEN $startprice AND $endprice ORDER BY c.typeid DESC LIMIT ".$_GET["start"].", ".$_GET["limit"]."";
    } else {          
        $query = "SELECT * FROM car c JOIN carType ct WHERE c.typeid=ct.typeid ORDER BY c.typeid DESC LIMIT ".$_GET["start"].", ".$_GET["limit"]."";
    }
    $result = $conn->query($query) or die("Query failed: ".$conn->error);
    while ($row = $result->fetch_assoc()){
        echo "<div class=\"car-info\">
                        <img class=\"carImg\" src='imgLoad.php?name=$row[carID]'>
                        <b>LOẠI XE  : </b>$row[typeName]<br>
                        <b>SỐ CHỖ   : </b>$row[seatNum]<br>
                        <b>BIỂN SỐ  : </b>$row[carNumPlate]<br>
                        <b>GIÁ THUÊ : </b>$row[price] VNĐ/ngày<br>
                        <a class=\"detail\" href=\"car.php?name=$row[carNumPlate]\">Xem chi tiết</a>
                    </div>";
        }
    }
?>

làm sao biết là ajax không hoạt động?
ai biết bạn truyền biến có đúng như bạn đã nghĩ hay không

4 Likes

Cách debug đơn giản đó là gõ query trực tiếp vào thanh địa chỉ trình duyệt xem nó trả về cái gì? Còn responding thì ta print_r hoặc var_dump ra để xem. Ở đây không liên quan Ajax, đây là PHP mà.

3 Likes

anh giúp em giải pháp truyền biến đúng với ạ, em không biết phải sửa như nào

Câu fetch.php?start=1&limit=5&start_price=300&end_price=1000 hay như thế nào? Bạn phải làm rõ ra được cái này. Không hiểu thì phải đọc lại xem cái query string của HTTP là như thế nào? Và PHP làm việc với nó ra sao. Nắm vững cái này mới tính tiếp, chứ không thể mù mờ việc input được, không có đầu vào thì chương trình xử lý… bằng niềm tin.

Nhập thủ công query string lên address bar xem code PHP của bạn có chạy không đã. Nó có chạy thì Ajax gửi đến mới lấy được kết quả, còn không trắng trơn hoặc chụp được mã lỗi của PHP nếu bạn đang bật error_reporting.

Ở bước này chưa có Ajax gì ráo nhé, đây là GET của HTTP hoàn toàn, xử lý được đã rồi mới lắp Ajax vào.

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