【问题标题】:Changing Query Parameter for jQuery UI's Autocomplete更改 jQuery UI 自动完成的查询参数
【发布时间】:2011-10-04 05:39:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: forms jquery-ui autocomplete


    【解决方案1】:

    您可以使用callback form of 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);
        };
    

    【讨论】:

      猜你喜欢
      • 2014-02-14
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 2011-07-23
      相关资源
      最近更新 更多