Нет, request
или response
не являются зарезервированными ключевыми словами & ndash; если бы они были, вы не могли бы использовать их в качестве имен параметров функции ..
То, что здесь происходит, довольно просто, и если вы когда-нибудь сделаете что-нибудь в Node, вы увидите шаблон. Это асинхронный JavaScript.
Вы передаете анонимную функцию source
. Эта функция вызывается всякий раз, когда автозаполнению требуется запросить источник данных (другими словами, пользователь что-то набрал).
Параметры функции: request
и response
. request
- это просто информация, которую запрашивает автозаполнение; request.term
- это запрос (что набрал пользователь). Вам решать, как реализовать поиск & ndash; возможно, у вас есть локальная переменная с возможностями, или вы можете сделать AJAX-вызов на сервер.
Теперь важная часть: если вы делаете вызов AJAX, вы не можете просто return
значение из source()
, потому что функция вернется задолго до завершения вызова AJAX. Вот почему есть параметр response
.
response
- это ссылка на функцию, переданную вашей функции source()
, которую вы вызываете всякий раз, когда получаете ответ на запрос. С помощью магии замыканий вы можете вызывать эту функцию изнутри обратного вызова AJAX.
response
(который может быть менее смутно назван callback
) ожидает массив строк или объектов со свойствами label
и value
. Эти результаты будут показаны в выпадающем списке автозаполнения.
Собираем все вместе:
$('selector').autocomplete({
...
source: function(request, response) {
// calculate results for a query.
response([{ label: 'Example', value: 'ex' }]);
}
});