Ответ 1
Вы можете сильно приложить к удаленной демонстрации автозаполнения пользовательского интерфейса jQuery: http://jqueryui.com/resources/demos/autocomplete/remote-jsonp.html
Чтобы получить результаты в списке автозаполнения, вам нужно поместить объект с меткой и значением параметра ответа (который фактически является функцией) внутри вашей функции успеха ajax:
source: function( request, response ) {
$.ajax({
url: "fill_id.php",
data: {term: request.term},
dataType: "json",
success: function( data ) {
response( $.map( data.myData, function( item ) {
return {
label: item.title,
value: item.turninId
}
}));
}
});
}
Но это будет работать, только если вы немного измените yor fill_id.php:
// escape your parameters to prevent sql injection
$param = mysql_real_escape_string($_GET['term']);
$options = array();
// fetch a title for a better user experience maybe..
$db = new SQLite3('database/main.db');
$results = $db->query("SELECT distinct(turninId), title FROM main WHERE turninid LIKE '".$param."%'");
while ($row_id = $results->fetchArray()) {
// more structure in data allows an easier processing
$options['myData'][] = array(
'turninId' => $row_id['turninId'],
'title' => $row_id['title']
);
}
// modify your http header to json, to help browsers to naturally handle your response with
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
echo json_encode($options);
Конечно, когда у вас нет названия или чего-либо в вашей таблице, вы также можете просто оставить свой ответ так, как есть, и повторить идентификатор в своем обратном вызове. Важно отметить, что вы заполняете свою функцию response
в автозаполнении парой value/item:
// this will probably work without modifying your php file at all:
response( $.map( data, function( item ) {
return {
label: item,
value: item
}
}));
изменить: обновил ссылку ссылки на новый автозавершение пользовательского интерфейса jquery ui