PHP Ajax没有得到想要的搜索

时间:2017-01-17 12:39:46

标签: php ajax

一个新手问题所以请善待:)

我制作了一个小型搜索脚本来查找数据库中的值。 但是当我输入搜索结果时,我得到了数据库中的所有文件。不只是我寻找的名字。我不是技术人员所以我想知道我的错误在哪里。

主要搜索页

        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function(){

                 function search(){

                      var name=$("#search").val();

                      if(name!=""){
                        $("#result").html("<img src='ajax-loader.gif'/>");
                         $.ajax({
                            type:"post",
                            url:"search-database.php",
                            data:"name="+search,
                            success:function(data){
                                $("#result").html(data);
                                $("#search").val("");
                             }
                          });
                      }



                 }

                  $("#button").click(function(){
                     search();
                  });

                  $('#search').keyup(function(e) {
                     if(e.keyCode == 13) {
                        search();
                      }
                  });
            });
        </script>
  </head>
  <body>
        <div id="container">
             <input type="text" id="search" placeholder="Zoek hier uw kandidaat...."/>
             <input type="button" id="button" value="Zoek" />
             <ul id="result"></ul>
        </div>
  </body>
</html>

搜索database.php中

<?php
include 'dbconfig.php';
?>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gevonden kandidaten</title>
</head>
<body>
<div id="header">
<label>Resultaten</label>
</div>
<div id="body">
    <table width="80%" border="1">
    <tr>
    <td>File Name</td>
    <td>File Type</td>
    <td>File Size(KB)</td>
    <td>View</td>
    </tr>
    <?php
    $search=$_POST['search'];
    $query = $pdo->prepare("select * from test where name LIKE '%$search%' LIMIT 0 , 10");
    $query->bindValue(1, PDO::PARAM_STR);
    $query->execute();
        while($results= $query->fetch())
        {
        ?>
        <tr>
        <td><?php echo $results['name'] ?></td>
        <td><?php echo $results['type'] ?></td>
        <td><?php echo $results['size'] ?></td>
        <td><a href="uploads/<?php echo $results['file'] ?>" target="_blank">view file</a></td>
        </tr>
        <?php
    }
    ?>
    </table>

</div>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

这里:

var name=$("#search").val();

您将输入值设置为名为name的变量,但在此处:

data:"name="+search,

您正在将不存在的名为search的值发送到您的PHP文件($POST['name'])。

因此,$_POST['search']为空,您的SQL请求为:

select * from test where name LIKE '%%' LIMIT 0 , 10

返回所有结果。

您应该将AJAX调用中的数据行替换为:

data:"search="+name,

答案 1 :(得分:1)

替换搜索功能
function search(){
                   var name=$("#search").val();
                    if(name!=""){
                             $("#result").html("<img src='ajax-loader.gif'/>");
                             $.ajax({
                                type:"post",
                                url:"search-database.php",
                                data:"name="+name,
                                success:function(data){
                                    $("#result").html(data);
                                    $("#search").val("");
                                }
                           });
                      }

                 }