Подтвердить что ты не робот

Изменение параметра запроса для автозаполнения пользовательского интерфейса jQuery

Я использую версию 1.8.13 jQuery UI Auto complete и по умолчанию jQuery использует параметр запроса "? term =" по умолчанию, в то время как мое приложение использует "? q =" в строке, которую создает, Я могу изменить переменную как "term" на бэкэнд, но я бы просто сказал jQuery, что сервер пытается ее отправить. Есть ли способ изменить это?

Сейчас у меня есть что-то вроде этого, и оно работает, если я изменю переменную на "term" на бэкэнд, но, как я уже сказал, я хотел изменить ее на "q", и я не могу найти какую-либо информацию в Интернете о установка параметра (который работает):

$( "#input-search").autocomplete({
   source: "/search/autocomplete/"
});
4b9b3361

Ответ 1

Вы можете использовать обратную форму source и обрабатывать все взаимодействие с сервером самостоятельно. Что-то вроде этого:

$("#input-search").autocomplete({
    source: function(request, response) {
        $.get('/search/autocomplete', { q: request.term }, function(data) {
            response(data.split('\n'));
        });
    }
});

Ответ 2

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

$("#input-search").autocomplete({
   source: function(request, response) {
      $.ajax({
         url: "/search/autocomplete",
         dataType: "json",
         data: {
            q: request.term
         },
         success: function(data) {
            response(data);
         }
      });
   },
}).data("autocomplete")._renderItem = function(ul, item) {
    $(ul).attr('id', 'search-autocomplete');
       return $("<li class=\""+item.type+"\"></li>")
       .data( "item.autocomplete", item )
       .append("<a href=\""+item.url+"\">"+item.title+"</a>").appendTo(ul);
    };