Ajax Twitter引导typeahead响应顺序崩溃
当用户键入abc时,typeahead会先发送ajax请求,然后是ab,然后是abc。 如果a的回复在abc的回复之后,它最终会显示a而不是abc的建议。 如何解决这个问题 我已经给出了JSON响应和javascript代码。但我认为这个问题与代码无关 我的JSON响应:Ajax Twitter引导typeahead响应顺序崩溃,ajax,twitter-bootstrap,Ajax,Twitter Bootstrap,当用户键入abc时,typeahead会先发送ajax请求,然后是ab,然后是abc。 如果a的回复在abc的回复之后,它最终会显示a而不是abc的建议。 如何解决这个问题 我已经给出了JSON响应和javascript代码。但我认为这个问题与代码无关 我的JSON响应: { "tt": 0.24989604949951172, "suggestions": [ "hurt locker", "hunger games",
{
"tt": 0.24989604949951172,
"suggestions": [
"hurt locker",
"hunger games",
],
}
我的JavaScript代码:
function typeahead_fn() {
var map = {};
$this = $(this);
$this.typeahead({
source: function (query, process) {
return $.get("/kgraphsearch/", { w: query }, function (data) {
$('#surl').html(data.search_query);
$('#surl').attr("href", data.search_query);
return process(data.suggestions);
});
},
matcher: function (param) {return true},
sorter: function (items) {
return items;
// implementation
},
property: 'name',
items: 5,
updater: function(item) {
return item;
},
onselect: function(item) {
console.log(item);
return item;
}
});
}
$(".typeahead").each(typeahead_fn);
这很奇怪,但很确定服务器会在最后一次响应abc请求,而响应会是abc。我的服务器是一个多线程服务器,可以处理并发请求。另外,使用一个或两个字母的前缀查询比使用三个或更多字母的查询需要更多的时间。好的,您是否可以在JSON结果中发回请求查询,然后将其与文本框中的当前值进行比较,并且仅在匹配时显示结果?在@Stokedout的类似行上,我能想到的一个解决方案是,客户机应该向服务器发送请求的时间戳。服务器应该返回时间戳。如果响应中给出的时间戳小于最后呈现的时间戳,则客户端不应呈现响应。这会奏效的。但我在想,推特引导本身是否有一些内置的解决方案。