Каковы аргументы" response "и" request "в обратном вызове" source " jQuery UI Autocomplete?

Я смотрю на учебник автозаполнения, и у меня есть несколько вопросов: http://jqueryui.com/demos/autocomplete/#option-disabled

$( "#tags" )
            // don't navigate away from the field on tab when selecting an item
            .bind( "keydown", function( event ) {
                if ( event.keyCode === $.ui.keyCode.TAB &&
                        $( this ).data( "autocomplete" ).menu.active ) {
                    event.preventDefault();
                }
            })
            .autocomplete({
                minLength: 0,
                source: function( request, response ) {
                    // delegate back to autocomplete, but extract the last term
                    response( $.ui.autocomplete.filter(
                        availableTags, extractLast( request.term ) ) );
                },
                focus: function() {
                    // prevent value inserted on focus
                    return false;
                },
                select: function( event, ui ) {
                    var terms = split( this.value );
                    // remove the current input
                    terms.pop();
                    // add the selected item
                    terms.push( ui.item.value );
                    // add placeholder to get the comma-and-space at the end
                    terms.push( "" );
                    this.value = terms.join( ", " );
                    return false;
                }
            });

поэтому я понимаю, что параметры для источника request и response. Это зарезервированные ключевые слова? Я ничего не мог найти при вводе этого в google. Мне неясно, что такое запрос и ответ, которые передаются здесь. Запрос просто захватывает вход? Где я могу почитать об этом подробнее?

3 ответов


request и response - это просто имена, которые автор кода решил дать двум формальным параметрам обратного вызова, назначенным source выбор виджет autocomplete:

автозаполнение можно настроить для работы с различными источниками данных, просто указав параметр источника. Источником данных может быть:

  • массив с локальными данными
  • строка, указывающая URL
  • обратный звонок

третий вариант, обратный вызов, обеспечивает большую гибкость, и может использоваться для подключения любого источника данных к Автозаполнению. Обратный вызов получает два аргумента:

  • объект запроса с одним свойством под названием "term", которое ссылается к значению, находящемуся в данный момент в текстовом вводе. Например, когда пользователь введенный" new yo " в поле города, срок автозаполнения будет равен "new yo".
  • ответ callback, который ожидает, что один аргумент содержат данные, которые можно предложить пользователю. Эти данные должны быть отфильтрованы на основании предоставленного срока, и может быть в любом из описанных форматов выше для простых локальных данных (string-Array или Object-Array с label / value / оба свойства). Это важно при предоставлении пользовательского исходный обратный вызов для обработки ошибок во время запроса. Вы должны всегда вызовите обратный вызов ответа, даже если вы столкнулись с ошибкой. Этот обеспечивает виджет всегда имеет правильное состояние.

нет, request или response не зарезервированы ключевые слова – если бы они были, вы не могли бы использовать их в качестве имен параметров функции..

то, что здесь происходит, довольно просто, и если вы когда-нибудь что-нибудь сделаете в узле, вы увидите шаблон. Это асинхронный JavaScript.

вы передаете анонимную функцию source. Эта функция вызывается всякий раз, когда автозаполнение необходимо запросить источник данных (другими словами, пользователь что-то набрал).

функции параметры request и response. request - это просто запрос автозаполнения информации;request.term запрос (ввод пользователя). Вам решать, как реализовать поиск – возможно, у вас есть локальная переменная с возможностями или вы можете сделать вызов AJAX на сервер.

теперь важная часть: если вы делаете вызов AJAX, вы не можете просто return значение source() потому что функция вернется задолго до завершения вызова AJAX. Вот почему есть


Это четко задокументировано на странице автозаполнения jQuery UI.

http://jqueryui.com/demos/autocomplete/

третий вариант, обратный вызов, обеспечивает большую гибкость, и может использоваться для подключения любого источника данных к Автозаполнению. Обратный вызов получает два аргумента:

объект запроса с одним свойством под названием "term", которое ссылается к значению, находящемуся в данный момент в текстовом вводе. Например, когда пользователь введенный" new yo " в поле города, срок автозаполнения будет равен "new yo".

обратный вызов ответа, который ожидает, что один аргумент содержат данные, которые можно предложить пользователю. Эти данные должны быть отфильтрованы на основании предоставленного срока, и может быть в любом из описанных форматов выше для простых локальных данных (string-Array или Object-Array с label / value / оба свойства). Это важно при предоставлении пользовательского исходный обратный вызов для обработки ошибок во время запроса. Вы должен всегда вызовите обратный вызов ответа, даже если вы столкнулись с ошибкой. Этот гарантирует, что виджет всегда имеет правильное состояние.