我不知道我做错了什么。我试着用json自动完成,但我总是得到完整的数据。我希望用户输入过滤数据。
JS:
$( "#tags" ).autocomplete({
source: "/script.php",
minLength: 2,
select: function(event, ui) {
var url = ui.item.id;
if(url != '#') {
location.href = '/blog/' + url;
}
},
open: function(event, ui) {
$(".ui-autocomplete").css("z-index", 1000);
}
});
PHP:
$result = $paed_db->prepare('SELECT data FROM table');
$result->execute();
$a_json = array();
while($data = $result->fetch(PDO::FETCH_OBJ)) {
$a_json_row["value"] = $data->data;
array_push($a_json, $a_json_row);
}
$json = json_encode($a_json);
print $json;
exit;
答案 0 :(得分:1)
因为你总是归还一切。看看你的查询。您不会通过自动填充中的用户输入过滤查询。用户的输入会自动作为名为term的URL参数传递。您的查询应该使用它来过滤数据。点击此处:http://api.jqueryui.com/autocomplete/#option-source
答案 1 :(得分:1)
JQueryUI无法过滤结果 - 您需要在PHP脚本的查询中进行搜索。 JQueryUI通过GET请求发送用户输入,因此您可以使用以下命令访问它:
$search = $_GET['term'];
(见http://api.jqueryui.com/autocomplete/#option-source)
因此,您可以在准备好的查询中使用该$ search变量从表中选择适当的行。例如,如果您要搜索名为name的列:
$result = $paed_db->prepare('SELECT data FROM table WHERE name LIKE :search');
$result->execute(array('search' => '%'.$search.'%'));