如何从 AJAX 搜索中检索结果?

How to retrieve the results from an AJAX search?

我正在尝试了解如何发送 AJAX 搜索的结果,但它不起作用。我想 return 搜索后的结果返回网站,我认为我的问题来自 SQL 查询但我无法弄清楚。

这是我的 php 代码:

<?php
include('db_conn.php');

$output="";

  $search = mysqli_real_escape_string($mysqli,$_POST["search_text"]);
  $query = "SELECT * FROM unit
  WHERE id LIKE '%$search%'
  OR unit_code LIKE '%$search%'
  OR unit_name LIKE '%$search%'
  OR lecturer LIKE '%$search%'
  OR semester LIKE '%$search%'
  ";
$result = mysqli_query($mysqli,$query);
if(mysqli_num_rows($result) > 0){
  $output .='<div class="table-responsive">
   <table class="table table bordered">
    <tr>
     <th>ID</th>
     <th>Unit Code</th>
     <th>Unit Name</th>
     <th>Lecturer</th>
     <th>Semester</th>
    </tr>
       ';
  while($row = mysqli_fetch_array($result)){
    $output.='
       <td>'.$row["id"].'</td>
       <td>'.$row["unit_code"].'</td>
       <td>'.$row["unit_name"].'</td>
       <td>'.$row["lecturer"].'</td>
       <td>'.$row["semester"].'</td>
    </tr>
    ';
  }
  echo $output;
}
else {
  echo 'Error php';
}

 ?>

这是 ajax:

   <script type="text/javascript">
        $('#search_button').click(function(){
          var keywords = $('#search_text').val().trim();
          $.get("search.php",
                {keywords:keywords}).done(function(data){
                  alert('test');
                  $('#result').html(data);
                });
        });
       </script>

我认为您的问题是您正在使用 $.get,但您正试图从 $_POST 变量中检索 PHP 中的值,该变量中没有任何内容,它将在$_GET 变量。

我建议您更改 ajax 调用以使用 $.ajax

<script type="text/javascript">
  $('#search_button').click(function(){
    var keywords = $('#search_text').val().trim();
    $.ajax({
      url: "search.php",
      data: {search_text: keywords},
      method: 'POST',
      success:function(data){
        $('#result').html(data);
      },
  });
</script>

数据数组中的第一个键应该与您在 PHP 中使用的键匹配以从 $_POST

中收集值