在我的Web应用程序中,我正在使用$.ajax()
请求从数据库加载数据并在浏览器中显示它。在执行请求期间,我会显示Loading Results ...
这样的消息:
$.ajax({
// ...
beforeSend: function() {
$('#loading-results-message').show();
},
complete: function() {
$('#loading-results-message').hide();
}
});
这很好用。但是,如果没有太多数据要加载,请求只需要几分之一秒。在这种情况下,消息也只显示几分之一秒。这个动画发生得太快,很难识别它。因此,如果仅在请求需要一定时间,即至少几秒但不仅仅是几分之一秒时才能显示消息,那将是很好的。这有可能吗?顺便说一下,我在服务器端使用Django,如果这很重要的话。
答案 0 :(得分:8)
使用setTimeout
建立计时器,在请求完成时取消计时器:
var desired_delay = 2000;
var message_timer = false;
$.ajax({
// ...
beforeSend: function() {
message_timer = setTimeout(function () {
$('#loading-results-message').show();
message_timer = false;
}, desired_delay);
},
complete: function() {
if (message_timer)
clearTimeout(message_timer);
message_timer = false;
$('#loading-results-message').hide();
}
});
文档
setTimeout
- https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout clearTimeout
- https://developer.mozilla.org/en-US/docs/DOM/window.clearTimeout 答案 1 :(得分:0)
我和@chris在这个解决方案上。但是,研究http://api.jquery.com/jQuery.ajaxSetup/
也可能值得您花些时间这将使您不必为每个请求写入超时。