Javascript TwitterTypeahead 0.9.3远程返回URL和json对象

Javascript TwitterTypeahead 0.9.3远程返回URL和json对象,javascript,jquery,twitter-bootstrap,twitter-bootstrap-3,bootstrap-typeahead,Javascript,Jquery,Twitter Bootstrap,Twitter Bootstrap 3,Bootstrap Typeahead,在bootstrap 2中,我使用以下代码发布了一个json对象 $('#typeahead').typeahead({ source: function (query, process) { var URL = 'http://localhost:8080/autocomplete/search/'; var query = {"t:jsonStringField": { "name": "

在bootstrap 2中,我使用以下代码发布了一个json对象

$('#typeahead').typeahead({
        source: function (query, process) {
         var URL = 'http://localhost:8080/autocomplete/search/';
         var query = {"t:jsonStringField": {
                          "name": "model",
                          "value": "fusion"
                         },
                      "t:jsonStringFilter": [
                             {"name": "year","value": "2009"},
                             {"name": "make","value": "ford"}
                         ]
                      }; 

            return $.getJSON(URL,
                { query: JSON.stringify(query)},
                function (data) {
                    return process(data);
                });
        }
    });
现在在TwitterTyeahead 0.9.3中,他们已经放弃了源代码概念,转而使用远程概念,但不幸的是,我不知道如何使用它

$(".typeahead").typeahead({

     remote : {    
      url: 'http://localhost:8080/autocomplete/search/',

      replace: function(uri, query) {

         var query = {"t:jsonStringField": {
                          "name": "model",
                          "value": "fusion"
                         },
                      "t:jsonStringFilter": [
                             {"name": "year","value": "2009"},
                             {"name": "make","value": "ford"}
                         ]
                      }; 

         return uri + JSON.stringify(query);
      },

      filter: function(response) {
           return response.matches;
      }

      return process(resultList);

    }
 }

不幸的是,它不起作用,我如何只发布JSON对象而不是将其附加到字符串中?谢谢

在原始代码中使用$.getJSON。这将发送一个请求(并期望json作为结果)收件人:
http://localhost:8080/autocomplete/search/?query=%7B%22t%3AjsonStringField%22%3A%7B%22name%22%3A%22model%22%2C%22value%22%3A%22fusion%22%7D%2C%22t%3AjsonStringFilter%22%3A%5B%7B%22name%22%3A%22year%22%2C%22value%22%3A%222009%22%7D%2C%7B%22name%22%3A%22make%22%2C%22value%22%3A%22ford%22%7D%5D%7D

要对Twitter的Typeahead调用执行同样的操作,远程数据的replace函数应该返回一个有效的url。在函数中,url的
?query=
部分缺失

您必须设置:url:
'http://localhost:8080/autocomplete/search/?query=“,

您还必须对json输入进行URL编码

注意:您不需要行
返回过程(resultList)
您必须使用filter函数将json结果转换为有效数据:

构成数据集的单个单元称为基准。这个 基准的标准形式是具有值属性和 代币财产

您可以使用模板设置下拉结果的样式,请参见:

默认情况下,typeahead.js创建的下拉菜单将显示 丑陋的,你会想样式,以确保它符合主题的 你的网页


您将需要从样式表中添加额外的CSS来设置引导的默认下拉列表。

考虑使用:这并不能回答我当前的问题,但无论如何我必须询问。此功能是否与旧功能一样有效?是否与bootstrap 3配合良好?是的,它将与bootstrap 3配合使用,您可以使用“旧”调用/code@BassJobsen因此,尽管我能够使用urlEncoded json对象使版本0.9.3正常工作,但实际上我切换到了您的bootstrap-3-typeahead fork。我对0.9.3提供的功能的缺乏感到不满意,比如自动选择第一个项目和进行编程搜索的能力。谢谢你的图书馆。