0

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

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 - 显示
  • 检查。com/autocomplete_bs.php?q=aging - 显示
  • 检查。com/autocomplete_bs.php?q=life - 不显示?
  • 检查。com/autocomplete_bs.php?q=food - 只显示第一个结果,不显示第二个
  • 检查。com/autocomplete_bs.php?q=creat - 显示多个结果,但跳过“什么是硝酸肌酸?”

控制台没有显示任何可以解释这一点的错误。有什么线索吗?

(对不起,因为我的声誉太低,而且我忘记了我必须破坏 URL 的其他主要登录名)。

4

2 回答 2

1

Welp, turns out I forgot that typeahead has a matcher function that filters out what it shows.

So this line fixed it:

matcher: function () { return true; },
于 2012-11-15T11:43:09.493 回答
0

检查.com/autocomplete_bs.php?q=life - 不显示任何内容,因为返回对象中的“名称”字段不包含任何“生命”

它返回:

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

因此,换句话说,您将 Typeahead 设置为显示“名称”包含实际字符串(例如“生命”)的那些结果,即使服务器返回更多项目。

于 2012-11-14T19:48:10.627 回答