Php 正在尝试编写livesearch脚本
我第一次尝试使用ajax。我正在尝试编写一个实时搜索,其中在输入的每个字符上运行对MySQL数据库的搜索 这是我目前的代码:Php 正在尝试编写livesearch脚本,php,ajax,jquery,search,Php,Ajax,Jquery,Search,我第一次尝试使用ajax。我正在尝试编写一个实时搜索,其中在输入的每个字符上运行对MySQL数据库的搜索 这是我目前的代码: <!doctype html> <html lang="en"> <meta charset="utf-8"> <script type="text/javascript"> function getStates(value){ $.post(
<!doctype html>
<html lang="en">
<meta charset="utf-8">
<script type="text/javascript">
function getStates(value){
$.post(
"getstates.php",
{partialState:value},
function(data){
$("#results").html(data);
});
}
</script>
</head>
<body>
<input type="text" name="input" onkeyup="getStates(this.value)" /><br />
<div id="results"></div>
</body>
</html>
getStates.php
//test the connection
try{
//connect to the database
$dbh = new PDO("mysql:host=127.0.0.1;dbname=livesearch","root", "usbw");
//if there is an error catch it here
} catch( PDOException $e ) {
//display the error
echo $e->getMessage();
}
$partialState = $_POST['partialState'];
$query = $dbh->prepare("SELECT state_name FROM tbl_state WHERE state_name LIKE '%$partialSate%'");
$query->execute();
$result = $query->fetchAll();
foreach($result AS $state){
echo '<div>'.$state['state_name'].'</div>';
}
mySQL数据库是使用正确的表名等正确构造的
为什么不从数据库返回结果状态?问题是您在查询中输入了一个错误:
$query = $dbh->prepare("SELECT state_name
FROM tbl_state
WHERE state_name
LIKE '%$partialSate%'");
^^^^Missing t
应该是
$query = $dbh->prepare("SELECT state_name
FROM tbl_state
WHERE state_name
LIKE '%$partialState%'");
但您还应正确使用准备好的查询:
固定代码:
浏览器的错误控制台是否提供任何错误?如果您直接在浏览器中请求getStates.php并提供所需的POST参数,那么输出结果如何?我如何在chrome中打开错误控制台?您已经包含了jquery库,不是吗?您也没有使用准备好的查询。是的,我链接到jquery库,我使用PDO连接到数据库!?试着做一个警报数据;行后:functiondata{所以我们可以看到发生了什么。另外,在chrome中,右键单击网页上的任意位置并选择inspect element,这样您就可以查看代码运行期间是否存在任何错误。感谢lawrence,由于某些原因,Jquery无法工作。我正在链接页面顶部的Jquery。它经过测试,应该可以工作。注意,我更改了$.postindex.php、 对于测试,您可能需要将其更改回$.postgetstates.php,.Lawrence我在jsfiddle中包含了我的代码:getstate.php只有基本文本,没有其他内容。为什么不能工作?
<?php
if(isset($_POST['partialState'])){
//test the connection
try{
//connect to the database
$dbh = new PDO("mysql:host=127.0.0.1;dbname=livesearch","root", "usbw");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
//if there is an error catch it here
} catch( PDOException $e ) {
//display the error
echo $e->getMessage();
}
$query = $dbh->prepare("SELECT state_name
FROM tbl_state
WHERE state_name
LIKE :like");
$query->execute(array(':like'=>'%'.$_POST['partialState'].'%'));
$result = $query->fetchAll();
foreach($result AS $state){
echo '<div>'.$state['state_name'].'</div>';
}
die();
}
?>
<!doctype html>
<html lang="en">
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
function getStates(value){
$.post("index.php", { "partialState":value },
function(data){
$("#results").html(data);
});
}
</script>
</head>
<body>
<input type="text" name="input" onkeyup="getStates(this.value)" /><br />
<div id="results"></div>
</body>
</html>