Если вам не нужно использовать вызовы ajax для извлечения данных, и ваш список автозаполнения не слишком велик, вы можете передать данные для автозаполнения из массива объектов js.
Предположим, у вас есть такие данные (которые вы строите так рано, как хотите / можете):
var data = [{"n":name, "p":pagename,"c":number_of_results},...];
Тогда автозаполнение вызова будет выглядеть:
$("#autocomplete").autocomplete(data, {
matchContains: true,
formatItem: function(row, i, max) {
return row.n + " ("+row.c+")";
},
formatMatch: function(row, i, max) {
return row.n;
},
formatResult: function(row) {
return row.n;
}
});
$("#autocomplete").result(function(event, data, formatted) {
if(!data) {
alert("Please select an item");
} else {
window.location.href = data.p;
}
});
Это создаст автозаполнение, которое будет выглядеть как item name (number of results)
, и при щелчке на элементе оно будет перенаправлено на имя соответствующего элемента.
У меня около 1000 предметов, и скорость автозаполнения мгновенная.