typeahead.js ajax远程数据源仅适用于同步ajax请求
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: 'Boards
', suggestion: function(data){ return '' + data.title + ' - ' + data.name + ''; } } },{ name: 'ta-viewall', displayKey: 'value', source: function(q, cb){ cb([{'value': q}]); }, templates: { suggestion: function(data) { return 'View all results for ' + data.value + '...'; } } });