Nếu tôi hiểu bạn chính xác, bạn sẽ nhận được kết quả nhưng không thể điền các trường đầu vào. Mặc dù tôi không sử dụng Twitter Bootstrap typeahead, nhưng tôi thực hiện một điều gì đó rất giống với tính năng tự động hoàn thành của jQuery. Đoạn mã dưới đây chưa được kiểm tra và tất nhiên bạn sẽ cần phải sửa đổi nó cho chính mình nhưng hy vọng sẽ giúp ích được phần nào.
Xem jsFiddle hoạt động này demo cho một cái gì đó tương tự.
PHP
$array = array();
while ($row = mysql_fetch_assoc($sql)) {
array_push($array,array('ContactName'=>$row['ContactName'],'Telephone'=>$row['Telephone'],'Email'=>$row['Email']));
}
echo json_encode($array);
Bạn có thể kiểm tra những gì được trả về bằng cách nhập URL theo cách thủ công (ví dụ:yourite / Customer.php? query =SomeContactName). Bạn sẽ thấy một cái gì đó tương tự như sau:
[{"ContactName":"Some Contact","Telephone":"5555555555","Email":"[email protected]"},
{"ContactName":"Some Other Contact","Telephone":"5555555555","Email":"[email protected]"}]
HTML / Javascript
<script>
$('input.typeahead').typeahead({
source: function (query, process) {
$.ajax({
url: 'Customer.php',
type: 'POST',
dataType: 'JSON',
// data: 'query=' + query,
data: 'query=' + $('#contactName').val(),
success: function(data)
{
var results = data.map(function(item) {
var someItem = { contactname: item.ContactName, telephone: item.Telephone, email: item.Email };
return JSON.stringify(someItem.contactname);
});
return process(results);
}
});
},
minLength: 1,
updater: function(item) {
// This may need some tweaks as it has not been tested
var obj = JSON.parse(item);
return item;
}
});
</script>
Dưới đây là một số bài đăng khác mà bạn có thể muốn xem tại Cách trả lại phản hồi từ AJAX gọi? và Định dạng kết quả ajax của Bootstrap typeahead - Ví dụ