JQuery和Bootstrap的Typeahead,似乎忽略了一些JSON结果?

时间:2012-11-14 19:15:29

标签: php javascript jquery twitter-bootstrap bootstrap-typeahead

这个让我很烦恼,希望有人能弄清楚发生了什么。

JS:

        $('#search').typeahead({
    source: function(typeahead, query){ 
        $.ajax({
            url: "/autocomplete_bs.php",
            type: "GET",
            data: "q="+query ,
            dataType: "JSON",
            async: true,
            success: function(data){
                if (data == null) {
                    data = '{"name":"name","url":"url"}';
                }
                typeahead.process(data);        //If the returned object is not a null json object, THEN process it.
            }
        });
    },
    property: 'name',
    items:8,
    onselect: function (obj) { 
        window.location = obj.url;
    }
});

autocomplete_bs.php位于:http://examine.com/autocomplete_bs.php?q=xxxx

您可以在此处测试自动完成:http://examine.com/(右上角)

令人难以置信的是,有些结果显示,有些则没有。

  • 检查。 com / autocomplete_bs.php?q = bacopa - shows
  • 检查。 com / autocomplete_bs.php?q =老化 - 显示
  • 检查。 com / autocomplete_bs.php?q =生活 - 没有显示?
  • 检查。 com / autocomplete_bs.php?q = food - 仅显示第一个结果,不显示第二个结果
  • 检查。 com / autocomplete_bs.php?q = creat - 显示多个结果,但跳过'什么是肌酸硝酸盐?'

控制台未显示任何可解释此错误的错误。任何线索?

(抱歉,我的声誉太低,我忘记了其他主要登录信息,我不得不打破网址。)

2 个答案:

答案 0 :(得分:1)

Welp,事实证明我忘了typeahead有一个matcher功能可以过滤掉它显示的内容。

所以这一行修好了它:

matcher: function () { return true; },

答案 1 :(得分:0)

examine.com/autocomplete_bs.php?q=life - 没有显示任何内容,因为返回对象中的“name”字段不包含任何“life”

它返回:

[{"name":"Stack - Anti-Aging","url":"http://examine.com/autocomplete_go.php?q=life&url=stacks/anti-aging.html"}]

换句话说,你设置Typeahead只显示 那些“name”包含实际字符串(例如'life')的结果,即使服务器返回更多项目..