我在使用数据库中的数据在Jquery中完成自动完成功能时遇到问题。每当我输入内容时,我总会收到“找不到结果”的消息。我希望它在用户输入时显示国家/地区名称。
jquery.php
<?php
require "database/database.php";
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
<link type="text/css" rel="stylesheet" href="CSS/style.css">
<script type="text/javascript" src="jquery/jquery-1.11.3.min.js"></script>
<script src="jquery/jquery-ui.min.js"></script>
</head>
<body>
<form action="" method="post">
<p><label>Country:</label><input type='text' name='country' value='' class='auto'></p>
</form>
<script type="text/javascript">
$(document).ready(function () {
$('.auto').autocomplete({
source:"suggested.php",
MinLength: 2
});
});
</script>
</body>
</html>
这是我建议的.php页面:
<?php
require "database/database.php";
$term = trim(strip_tags($_GET['term']));
$data = mysql_query("SELECT * FROM countries WHERE countryname LIKE '%".$term."%'");
while($row = mysql_fetch_assoc($data)) {
$data[] = array(
'label' = $row['countryname'],
'value' = $row['countryname']
);
}
echo json_encode($data);
flush();
}
?>
在数据库中,我有一个名为countries的表,其中包含countryid,countryname和countryflag。我只需要提取countryname列。 我尝试过使用$ _GET ['term']和$ _REQUEST ['term']。 我尝试了不同的教程,但似乎都没有。 如果您有任何建议请告诉我。 谢谢
答案 0 :(得分:0)
如果您在键入时每次运行查询都会延迟执行,因为您可以输入值作为查询条件值!
I can give you some I tested logic is run your query first when document is loaded and store as a json data type,then you can set source data in autocomplete
这可以通过运行SQL查询来减少页面延迟响应时间
<form action="" method="post">
<p><label>Country:</label><input type='text' name='country' value='' class='auto'></p>
</form>
<script type="text/javascript">
$(document).ready(function () {
var source = [];
$.ajax({
url : "suggested.php",
data : "GET",
dataType : "json",
success : function(data){
for(var i in data){
source.push(data[i]);
}
}
});
$('.auto').autocomplete({
source: source,
MinLength: 2
});
});
</script>
suggested.php
<?php
require "database/database.php";
$data = mysql_query("SELECT * FROM countries");
$result = array();
while($row = mysql_fetch_assoc($data)) {
$result[] = array(
'label' = $row['countryname'],
'value' = $row['countryname']
);
}
echo json_encode($result);
flush();
}
?>