我正在尝试创建带有远程源的引导程序标签输入(从服务器获取标签)。当我使用同步请求时,它的效果很好,但是在按下每个字母后屏幕冻结了一段时间,等待AJAX完成。而且用户的互联网连接速度越慢,屏幕冻结越多。
我尝试使用文档https://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples/,但是他们在那里使用了Bloodhound,我已经尝试了几个小时来处理它,但是没有机会。所以我只是决定改用typeaheadjs。
我的jQuery代码如下:
obj.tagsinput({
tagClass: function (item) {
return 'cf-tag-' + item.color;
},
itemValue: 'id',
itemText: 'name',
typeaheadjs: function(query, process = false) {
tagsFinal = [];
$.ajax({
url: tagsInputArgs.ajaxUrl,
async: false,
data: {
'action': 'get_budget_tags',
'security': tagsInputArgs.security,
'budget_id': $('.budget_id').val(),
'query': query
},
type: 'GET',
cache: true,
success: function (data) {
tagsFinal = data;
if (process)
process(data);
}
});
//process(tagsFinal);
return tagsFinal;
}
});
我从服务器获取的JSON是:
[
{
"id":"75",
"budget_id":"91",
"name":"electronic",
"color":"cyan"
}
]
它在异步设置为false时起作用。如果我将其反转,无论处理数据的数量和位置如何,都不会自动完成。我尝试使用$ .get(),但没有结果。
预期结果是获得相同的自动完成标签输入,但不冻结屏幕(也许自动完成会出现一些延迟,但效果会更好)。