【问题标题】:Clear fields in Live Search?清除实时搜索中的字段?
【发布时间】:2020-03-03 21:28:28
【问题描述】:

我正在使用 php+html(带有 Ajax)文件,在网页中显示 MySQL 的内容。 index.php 是我在从 fetch.php 提取内容时显示内容的地方。我已经从这个链接学习了一个教程:https://www.youtube.com/watch?v=wCsPAquMNVw

我面临的一个问题是,当我在搜索中键入内容时,如果它包含在 sql 表中,则会显示一个值,如果该值不包含在 sql 表中,则会调用"Data not found";。但是,如果在搜索栏中没有输入任何内容,它不会清除搜索结果,而是显示已找到的数据。如果在搜索栏中没有输入任何内容,如何清除搜索结果。在代码中,如果 if(txt == ''),我应该输入什么?

索引.php

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>LiveData</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
 </head>
 <body>
  <div class="container">
   <br />
   <h2 align="center">Live Data Search</h2><br />
   <div class="form-group">
    <div class="input-group">
     <span class="input-group-addon">Search</span>
     <input type="text" name="search_text" id="search_text" placeholder="Search by ID" class="form-control" />
    </div>
   </div>
   <br />
   <div id="result"></div>
  </div>
 </body>
</html>


<script>
$(document).ready(function(){
    $('#search_text').keyup(function(){
        var txt = $(this).val();
        if(txt != '')
        {
            $.ajax({
                url:"fetch.php",
                method: "post",
                data: {search:txt},
                dataType: "text",
                success: function(data)
                {
                    $('#result').html(data);
                }
            });
        }
    });
});
</script>

fetch.php

<?php
//fetch.php
$connect = mysqli_connect("localhost", "id12", "", "id127");
$output = '';
$sql = "SELECT * FROM Datas WHERE ID LIKE '%" .$_POST["search"]."%'";
$result = mysqli_query($connect, $sql);

if(mysqli_num_rows($result) > 0)
{
 $output .= '<h4 align = "center">Search Result</h4>';
 $output .= '<div class="table-responsive">
                <table class = "table table bordered">
                   <tr>
                        <th>ID</th>
                        <th>Name</th>
                    </tr>';

    while($row = mysqli_fetch_array($result))
    {
        $output .= '
                <tr>
                    <td>'.$row["ID"].'</td>
                    <td>'.$row["Name"].'</td>
                </tr>
            ';
    }
    echo $output;

}
else
{
    echo "Data not found";
}

?>

【问题讨论】:

  • 为什么不为此编写正确的代码呢?这到底与MySQL有关吗?你有什么努力让它发挥作用?
  • @NicoHaase 我只需要在 fetch.php 中进行更改,如果在搜索框中没有输入任何内容,我可以清除搜索结果(输出 = '')。我不知道如何继续这个逻辑。
  • 听起来不错。那么预期的结果是什么?检查您的状况的逻辑在哪里?
  • if(mysqli_num_rows($result) &gt; 0) 是我检查搜索栏中的输入是否与 mySQL 表中的任何值匹配的地方。如果是,它将显示结果,如果输入的值不在表格中,它将显示Data not found。如果在搜索栏中没有输入任何内容,如何清除搜索结果?
  • 我想我明白了,在代码中我必须添加if(txt == ' '),然后清除搜索栏。对吗?

标签: php html mysql ajax


【解决方案1】:

问题似乎是您没有检查 fetch.php 实际返回的内容,您只是显示返回的值。

如果没有结果,我会简单地返回 false 而不是字符串并在 javascript 中检查它,例如:

if(returnValue === true) {
 ...
}else{
   $('#result').html("Nothing to show yet.");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    相关资源
    最近更新 更多