即使本地/预取中有数据,也会触发预先输入远程调用

时间:2013-11-07 05:44:07

标签: ajax jquery typeahead

即使预取/本地数据中存在值,远程调用也会触发。

示例代码:

var jsonObj = ["Toronto", "Montreal", "Calgary", "Ottawa", "Edmonton", "Peterborough"]; 

$('input.countries-cities').typeahead([
    {
        name: 'Canada',
        local: jsonObj,
        remote: {
            url: 'http://localhost/typeahead/ajaxcall.php?q=QUERY',
            cache: true
        },
        limit: 3,
        minLength: 1,
        header: '<h3>Canada</h3>'
    }
]);

我期望的是只有在本地没有匹配的情况下才会触发远程呼叫。但每次我输入位置时,远程呼叫都会被触发。任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

我知道这个问题已经有几个月了,但我遇到了类似的问题并发现了this answer

问题是您的limit设置为3,并且您的搜索结果的结果少于您的限制,从而触发远程调用。如果您将limit设置为1,除非没有结果,否则您将无法接听远程呼叫。

不是一个伟大的设计IMO,因为如果有3个结果你可能仍然希望看到3个结果。更糟糕的是,说你的本地/预取结果只返回1个结果...如果你的遥控器返回相同的结果,它将在你的列表中重复。我还没有找到解决这个问题的方法。

答案 1 :(得分:0)

在bloodhound.js中替换

matches.length < this.limit ? cacheHit = ...

通过

matches.length < 1 ? cacheHit = ...