Извините за мой предыдущий ответ, я не видел jsFiddle, когда впервые прочитал ваш вопрос.
Проблема в том, что вы не устанавливаете значение для свойства label возвращаемого массива. Функциональность автозаполнения ожидает массив, который содержит объекты, которые являются либо прямыми строками (["item1", "item2", "item3"]
), либо имеют свойство метки. Базовый код автозаполнения использует свойство label, чтобы знать, что отображать. Посмотрите пример пользовательских данных jQuery-ui, чтобы лучше понять, как должен отформатироваться ваш объект json: http://jqueryui.com/demos/autocomplete/#custom-data
В настоящее время ваш возвращенный JSON будет выглядеть примерно так:
[
{ id: "companyId", company: "company Name" },
{ id: "AnotherID", company: "another company" }
]
Однако у ваших объектов нет свойства метки. Изменение PHP для установки метки (вместо компании) следующим образом должно исправить список, который не заполняется:
$return_arr = array();
$param = mysql_real_escape_string($_GET['term']);
$fetch = mysql_query("SELECT * FROM customers WHERE company like '%$param%'");
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$row_array['id'] = $row['id'];
$row_array['label'] = $row['company'];
array_push($return_arr,$row_array);
}
echo json_encode($return_arr);
И вы захотите обновить свой JavaScript, чтобы учесть новый формат:
$(function() {
$("#company").autocomplete({
source: "bin/view_customers.php",
minLength: 1,
select: function(event, ui) {
$('#id').val(ui.item.id);
$('#company').val(ui.item.label);
}
});
});