PHP AJAX过滤器问题

问题描述 投票:0回答:1

我正在尝试为汽车网站创建过滤器。我希望能够按外观颜色进行过滤。我使用外部表示数据库中的颜色。我的UL将数据库中的所有颜色都放入框中,并使每个颜色成为一个工业复选框。然后,我在页面上通过SELECT *语句列出所有汽车,然后通过包装和div的单个echo语句获取结果。我不想在此页面上的每辆汽车旁边显示我的外部颜色名称,因为我正在设计移动版本并试图保持其清洁。但是,我尝试将它们列为工业标签,但仍然发送到空白页。

<ul class="list-group">
        <?php
            $sql = "SELECT DISTINCT exterior FROM newcars ORDER BY exterior";
            $result = $conn->query($sql);
            while($row=$result->fetch_assoc()) {
        ?>
            <li class="list-group-item">
                <div class="form-check">
                    <label class="form-check-label">
                        <input type="checkbox" class="form-check-input product_check" name="" value="<?= $row['exterior']; ?>" id="exterior"><?= $row['exterior']; ?>
                    </label>
                </div>
            </li>
        <?php
        }
        ?>
    </ul>

<div id="test">

        <?php
          $sql = "SELECT * FROM newcars";
          $result = mysqli_query($conn, $sql);
          if (mysqli_num_rows($result) > 0) {
            while ($row = mysqli_fetch_assoc($result)) {
                echo ("<a href='newcarindex.php?id={$row['id']}'><div class='car'>");
                echo '
                      <tr>
                        <td>
                        <img src="data:image\jpeg;base64,'.base64_encode($row['photo']).'"/>
                        </td>
                      </tr>
                ';
                echo "<h2 class=car-name>";
                echo $row['name'];
                echo "</h2>";
                echo "<span class=stock>STOCK#";
                echo $row['stock'];
                echo "</span>";
                echo "<h3 class=car-msrp>";
                echo $row['msrp'];
                echo "</h3>";
                echo "</div></a>";
            }
          } else {
            echo "There are no matching results!";
          }
        ?>
    </div>

然后进入我的ajax脚本

<script type="text/javascript">
    $(document).ready(function(){

      $(".product_check").click(function(){
        $("#loader").show();

        var action = 'data';
        var class = get_filter_text('class');
        var body = get_filter_text('body');
        var exterior = get_filter_text('exterior');

        $.ajax({
          url:'action.php',
          method:'POST',
          data:{action:action,class:class,body:body,exterior:exterior},
          success:function(response){
          $("#test").html(response);
          $("loader").hide();
        }
        });

      });

      function get_filter_text(text_id){
        var filterData = [];
        $('#'+text_id+':checked').each(function(){
          filterData.push($(this).val());
        });
        return filterData;
      }

    });
  </script>

最后使用action.php页面连接到我的数据库并过滤结果

include 'dbh.php';

if(isset($_POST['action'])) {
  $sql = "SELECT * FROM newcars WHERE class !=''";

if(isset($_POST['exterior'])) {
    $exterior = implode("','", $_POST['exterior']);
    $sql .="AND exterior IN('".$exterior."')";
  }

$result = $conn->query($sql);
  $output='';

  if($result->num_rows>0){
    while($row=$result->fetch_assoc()){
    $photo = base64_encode($row['photo']);
    $output .= "<a href='newcarindex.php?id={$row['id']}'>
        <div class='car'>
            <tr>
                <td>
                    <img src='data:image\jpeg;base64,{$photo}'/>
                </td>
            </tr>
            <h2 class='car-name'>{$row['name']}</h2>
            <span class='stock'>STOCK#{$row['stock']}</span>
            <h3 class='car-msrp'>{$row['msrp']}</h3>
        </div></a>";
}
  } else {
    echo "There are no comments!";
  }
}
?>

我遇到的问题是,每当我单击一种颜色以按页面进行过滤时,都会显示为空白,表示没有结果或错误。我在做什么错?

javascript php ajax isset
1个回答
0
投票

仅查看action.php,在成功查询后,我看不到$output被回显。这是action.php的完整代码吗?

© www.soinside.com 2019 - 2024. All rights reserved.