我正在将jquery .autocomplete()用于从json_encode数组获取数据的html搜索表单。 匹配时,提取的数组具有两个值-company_code和company_name。
.autocomplete()在一个值下显示一个值,但我希望它们在同一行上。
这是我获取数组的代码,它获取两个值:
$stmt = $conn->prepare('SELECT TICKER, COMPANY_NAME FROM companies WHERE TICKER LIKE :term OR COMPANY_NAME LIKE :term');
$stmt->execute(array('term' => $_GET['term'].'%'));
while($row = $stmt->fetch()) {
$return_arr[] = $row['TICKER'];
$return_arr[] = $row['COMPANY_NAME'];
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
/* Toss back results as json encoded array. */
echo json_encode($return_arr);
jQuery自动完成脚本是这样的:
$(function() {
$(".search").autocomplete({
source: "/php/autocomplete.php",
minLength: 1
});
答案 0 :(得分:1)
这很简单,您可以将列值作为单个数组元素而不是单独的元素连接在一起。
例如,代替此:
$return_arr[] = $row['TICKER'];
$return_arr[] = $row['COMPANY_NAME'];
执行以下操作:
$return_arr[] = $row['TICKER'] . ' ' . $row['COMPANY_NAME'];
注意,我将两个列值串联为一个字符串(中间有一个空格)。
代码不起作用的原因是,当您执行$return_arr[] = 'some_value'
时,您将向json数组添加一个新元素,并且jQuery UI Autocomplete将每个元素视为一个单独的列表项。