Javascript Twitter typeahead-%正在作为远程查询的字符串传递的查询

Javascript Twitter typeahead-%正在作为远程查询的字符串传递的查询,javascript,typeahead.js,Javascript,Typeahead.js,我已经在这里看了很多(以及)但我似乎找不到一个类似于我自己的问题 我在这里可能有点粗-我的%查询字符串是作为远程查询的一部分传递的,这显然是我不想要的。 例如: "NetworkError: 404 NOT FOUND - http://local.example.co:8000/search-schools/%QUERY"` 这是我的JS(正如你所看到的,我在一个页面上有多个输入框,每个输入框位于单独的bootstrap3选项卡上(这将是另一个问题的焦点): var schoolSourc

我已经在这里看了很多(以及)但我似乎找不到一个类似于我自己的问题

我在这里可能有点粗-我的%查询字符串是作为远程查询的一部分传递的,这显然是我不想要的。 例如:

"NetworkError: 404 NOT FOUND - http://local.example.co:8000/search-schools/%QUERY"`
这是我的JS(正如你所看到的,我在一个页面上有多个输入框,每个输入框位于单独的bootstrap3选项卡上(这将是另一个问题的焦点):


var schoolSource=新猎犬({
提示:错,
datumTokenizer:Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer:猎犬,标记,空白,
远程:{
url:“/search schools/%QUERY”
}
});
schoolSource.initialize();
$(“#schoolSearch1”).typeahead(null{
名称:'schoolSearch1',
displayKey:'名称',
资料来源:学校资料来源
});
$(“#schoolSearch2”).typeahead(null{
名称:'schoolSearch2',
displayKey:'名称',
资料来源:学校资料来源
});
行为: 我可以看到,当我在输入框中输入搜索文本时,尝试与远程URL通信,但是它传递的是文本%查询字符串,而不是输入框中的内容


我做错了什么?如何将查询字符串传递给侦探犬?

根据OP链接中的示例,您可能应该在远程配置中包含
通配符属性。请尝试:

var schoolSource = new Bloodhound({
      hint: false,
      datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
      queryTokenizer: Bloodhound.tokenizers.whitespace,
        remote: {
          url: '/search-schools/%QUERY',
          wildcard: '%QUERY'
        }
}

一个简单的解决方案,尽管我仍然不明白为什么需要包含此参数。只需更改:

<script type="text/javascript">

            var schoolSource = new Bloodhound({
                hint: false,
                datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
                queryTokenizer: Bloodhound.tokenizers.whitespace,
                remote: {
                   url: '/search-schools/%QUERY'
                }
            });
            schoolSource.initialize();

</script>

var schoolSource=新猎犬({
提示:错,
datumTokenizer:Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer:猎犬,标记,空白,
远程:{
url:“/search schools/%QUERY”
}
});
schoolSource.initialize();
为此(请注意remote中的其他条目)


var schoolSource=新猎犬({
提示:错,
datumTokenizer:Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer:猎犬,标记,空白,
远程:{
url:“{%url”schoolSearchJSONResponseEmpty“%}%QUERY”,
通配符:'%QUERY'
}
});
schoolSource.initialize();

谢谢你,阿米特,我想我们是同时键入答案的。我会将你的回答标记为答案。在你的回答中,你说你仍然不明白这一点。好吧,这只是API的定义方式。没有定义“默认”通配符,所以你需要指定值。
<script type="text/javascript">

            var schoolSource = new Bloodhound({
                hint: false,
                datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
                queryTokenizer: Bloodhound.tokenizers.whitespace,
                remote: {
                   url: '/search-schools/%QUERY'
                }
            });
            schoolSource.initialize();

</script>
<script type="text/javascript">
    var schoolSource = new Bloodhound({
        hint: false,
        datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        remote: {
           url: '{% url 'schoolSearchJSONResponseEmpty' %}%QUERY',
           wildcard: '%QUERY'
        }
    });
    schoolSource.initialize();
</script>