通过JQuery UI自动完成获取筛选结果

时间:2014-10-03 10:30:20

标签: php jquery jquery-ui jquery-ui-autocomplete

我不知道我做错了什么。我试着用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;

2 个答案:

答案 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.'%'));
相关问题