Typeahead.js仅在同步提交请求时才使用自定义ajax远程数据源,而不是异步提交。异步提交时(async:true),我的脚本和自定义TABoards()函数在cb()函数传播结果列表之前完成。我的代码完美无瑕地运行并产生两个数据源的结果:一个远程ajax数据源和一个"静态"数据源始终生成单个"查看[查询]的所有结果"结果。但是,生成的代码也会在浏览器javascript控制台中产生以下注意事项:"主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。"添加" .done(function(){cb(response)});"没用。
除了不生成浏览器通知外,如何重写此代码才能完全相同?
var TABoards = function(q, cb){
$.ajax({
dataType: "json",
async: false,
url: '/typeahead.php?q='+q+'&type=boards',
success: function(response){
cb(response);
}
});
}
$('#hdrSrchQ').typeahead({
highlight: true,
hint: false,
minLength: 3
}, {
name: 'ta-boards',
displayKey: 'title',
source: TABoards,
templates: {
header: '<h4>Boards</h4>',
suggestion: function(data){
return '<a href="/'+ data.name +'">' + data.title + ' - ' + data.name + '</a>';
}
}
},{
name: 'ta-viewall',
displayKey: 'value',
source: function(q, cb){
cb([{'value': q}]);
},
templates: {
suggestion: function(data) {
return '<a href="/?q=' + data.value + '">View all results for ' + data.value + '...</a>';
}
}
});