正在從JSON文件獲取數據時,您必須在客戶端進行過濾。它可以與服務器的實際AJAX請求一起工作,您可以在服務器上執行過濾以僅返回所需的數據(這就是爲什麼您將查詢條件作爲參數發送的原因)。
所以,你需要改變你的代碼看起來像這樣:
$('input[name="q"]').autoComplete({
source: function (term, response) {
$.getJSON('/search.json', function (data) {
term = term.toLowerCase();
var matches = [];
for (i = 0; i < data.length; i++)
if (~data[i].toLowerCase().indexOf(term)) matches.push(data[i]);
response(matches);
});
}
});
你可能需要做一些不同,這取決於你的data
結構是什麼樣子,但我假設它是一個數組串
編輯
如果你想限制你的比賽,你可以做到這一點的for循環,而不是在最後一行,這將是更好的性能,因爲它不會有循環周圍,一旦你有5場比賽
$('input[name="q"]').autoComplete({
source: function (term, response) {
$.getJSON('/search.json', function (data) {
term = term.toLowerCase();
var matches = [];
for (i = 0; i < data.length; i++)
if (~data[i].toLowerCase().indexOf(term) && matches.length == 4) {
matches.push(data[i]);
break;
}
response(matches);
});
}
});
變量'選擇「必須是一個數據數組?如何使它到達那裏? – dmitriy
是的,它的字符串數組 – dmitriy
然後我的答案中的代碼應該正常工作。 – George