在PHP中使用AJAX进行搜索无法正常工作

时间:2016-03-22 07:56:33

标签: php ajax

我正在尝试进行实时搜索,但它无法正常工作。代码基于你的教程。我想知道这是否有在localhost上运行的问题,或者我真的在代码上有问题。这是我第一次使用AJAX。每当我输入一些文字时,它都不会显示任何结果。

  ---index.php----

   <?php include ("includes/connect.php"); ?> 
   <html>
      <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
        <script type="text/javascript">
            function getClients(value){
                $.post("getClients.php",{partialClients:value},function(data)
                 $("#results").html(data);

            });

         }
        </script>
   </head>


   <body>
         <input type="text" onkeyup="getClients(this.value)"></input>
         <br>
         <div id="results"></div>

  </body>
  </html>


   -----getClients.php---

  <?php

     include "includes/connect.php"

     $partialClients= $_POST['partialClients'];
     $client = mysql_query("select * from clients WHERE client like    '%$partialClients%'  ");

     while ($clientArray = mysql_fetch_array($client)) {
        echo "<div>" .$state['client']. "</div>";
    }
   ?>

1 个答案:

答案 0 :(得分:2)

首先停止使用mysql_*扩展名,在PHP 7中弃用并关闭,使用mysqli_*PDO

您的PHP代码在以下行中出现拼写错误:

include "includes/connect.php" // terminate with semicolon (;)

您在上述行中缺少分号。

第二个问题是指您只选择client列并提取name列。

您的SQL语句仅针对此查询返回client列:

select client from clients // only return client column

你在while循环中获取的是什么:

while ($clientArray = mysql_fetch_array($client)) {
    echo "<div>" .$state['name']. "</div>";
}

在上面的例子中,$state是未定义的,这应该是:

while ($clientArray = mysql_fetch_array($client)) {
    echo "<div>" .$clientArray['name']. "</div>";
}

你的SQL语句应该是:

SELECT * FROM clients WHERE client LIKE '%$partialClients%'

对所有列使用(*)或在查询中添加name列。

更新2:

已弃用扩展程序的修改代码:

<?php
include "includes/connect.php";
$partialClients= $_POST['partialClients'];
$client = mysql_query("SELECT client FROM clients WHERE client LIKE '%$partialClients%'");

while ($clientArray = mysql_fetch_array($client)) {
   echo "<div>" .$clientArray['client']. "</div>";
}
?>