自动完成:检测不到远程数据源的任何结果
Autocomplete: detect no results with remote datasource
上下文
- 我使用jQueryUI自动完成远程数据源
- 源以以下格式发送数据:
[{'label':'Bob', 'id':'03362548'}, {...}]
- 搜索开始时,我会显示一个加载程序gif
- 数据过滤是在服务器端完成的
- 如果没有结果(服务器发送
[]
),我想隐藏加载程序gif
问题
如何检测搜索是否没有隐藏加载程序gif的结果?
代码
jquery:
$('#redir-output').autocomplete({
source: 'php/ajax/autocomplete.php',
search: function(event, ui) {
$('#redir-loader').show();
},
open: function(event, ui) {
$('#redir-loader').hide();
},
select: function(event, ui) {
$(this).attr('name', ui.item.id);
}
});
默认情况下,当插件显示结果时,它会检查是否有数据要显示。如果没有,它会关闭菜单。
_response: function(content) {
if (!this.options.disabled && content && content.length) {
...
} else {
// it closes the menu when content.length == 0 (no data)
this.close();
}
关闭菜单会引发"关闭"事件,所以我认为你可以使用它。然而,关闭事件只有在菜单可见时才会触发:
close: function(event) {
clearTimeout(this.closing);
// as the menu might not be visible at that moment, this is reliable
if (this.menu.element.is(":visible")) {
...
this._trigger("close", event);
}
}
我认为您将不得不使用源代码作为回调,并自己实现ajax请求。使用"完整"回调,您可以隐藏加载图标,在任何情况下,当请求结束时,无论是否返回数据,都应该隐藏该图标:
$('#redir-output').autocomplete({
source: function(request, response) {
$.ajax({
url: 'php/ajax/autocomplete.php',
data: request,
dataType: "json",
success: function(data, status) {
response(data);
},
error: function() {
response([]);
},
complete: function() {
$('#redir-loader').hide();
}
});
},
,
search: function(event, ui) {
$('#redir-loader').show();
},
open: function(event, ui) {
$('#redir-loader').hide();
},
select: function(event, ui) {
$(this).attr('name', ui.item.id);
}
});?
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- Datatables:通过DOM数据源中的名称引用列
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- webpack代码拆分了handlerbs文件——结果是文件很大
- JavaScript循环无法正确计算/显示结果
- 如何将JSON数据源适合Jquery自动完成小部件
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- SmartGWT数据源和CORS
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- 在没有数据源结果的情况下隐藏BIRT中的网格/表
- 自动完成:检测不到远程数据源的任何结果