我正在尝试进行实时搜索,但它无法正常工作。代码基于你的教程。我想知道这是否有在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>";
}
?>
答案 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>";
}
?>