更改jQuery UI的自动完成的查询参数

Kei*_*ith 18 forms jquery-ui autocomplete

我正在使用jQuery UI的自动完成版本1.8.13,默认情况下,jQuery默认使用查询参数"?term =",而我的应用程序在它创建的字符串中使用"?q =".我可以在后端将变量更改为"term",但我宁愿告诉jQuery服务器尝试发送它的内容.有没有办法改变这个?

现在我只是有这样的东西,如果我在后端将变量更改为"term",它就有效,但就像我说我想把它改成"q"而我在网上找不到任何关于设置参数的信息(这样可行):

$( "#input-search").autocomplete({
   source: "/search/autocomplete/"
});
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 26

您可以使用回调形式source并自己处理与服务器的所有交互.像这样的东西:

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


Kei*_*ith 12

上面的答案是一个很简单的例子,帮助我在我的应用程序上得到这个结果,它从响应数据生成一个无序列表,显示自动完成结果:

$("#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);
    };
Run Code Online (Sandbox Code Playgroud)