Получение отфильтрованных результатов с помощью автозаполнения JQuery UI

Я не знаю, что я делаю не так. Я пытался использовать автозаполнение с 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

Решение

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.'%'));
1

Другие решения

Это потому, что вы всегда все возвращаете. Посмотри на свой запрос. Вы не фильтруете запрос по пользовательскому вводу из автозаполнения. Ввод пользователя передается автоматически как URL-параметр, называемый term. Ваш запрос должен использовать это для фильтрации данных. Смотрите больше здесь: http://api.jqueryui.com/autocomplete/#option-source

1

По вопросам рекламы [email protected]