即时通讯使用自动完成(php,ajax)在线提供,但由于我不熟悉,因此我希望能帮助我做错误。
基本上我有一个输入字段,用户可以通过邮政编码或城镇名称搜索,但我需要在标签名称中始终显示城镇的名称,但$ results变量带来的数组始终是一列数据
这是我的代码:
自动complete.php:
function serachForKeyword($keyword) {
$db = getDbConnection();
$stmt = $db->prepare("SELECT postcode, town FROM `uk_postcodes` WHERE postcode LIKE ? ORDER BY town");
$keyword = $keyword . '%';
$stmt->bindParam(1, $keyword, PDO::PARAM_STR, 100);
$isQueryOk = $stmt->execute();
$results = array();
if ($isQueryOk) {
$results = $stmt->fetchAll(PDO::FETCH_COLUMN);
} else {
trigger_error('Error executing statement.', E_USER_ERROR);
}
$db = null;
return $results;
}
autocomplete.js:
var MIN_LENGTH = 2;
$( document ).ready(function() {
$("#keyword").keyup(function() {
var keyword = $("#keyword").val();
if (keyword.length >= MIN_LENGTH) {
$.get( "auto-complete.php", { keyword: keyword } )
.done(function( data ) {
$('#results').html('');
var results = jQuery.parseJSON(data);
console.log(results);
$(results).each(function(key, value) {
$('#results').append('<div class="item">' + value + '</div>');
})
$('.item').click(function() {
var text = $(this).html();
$('#keyword').val(text);
})
});
} else {
$('#results').html('');
}
});
$("#keyword").blur(function(){
$("#results").fadeOut(500);
})
.focus(function() {
$("#results").show();
});
});