仅在AJAX请求需要一定时间时才执行代码?

时间:2013-02-14 18:08:30

标签: javascript ajax jquery

在我的Web应用程序中,我正在使用$.ajax()请求从数据库加载数据并在浏览器中显示它。在执行请求期间,我会显示Loading Results ...这样的消息:

$.ajax({
    // ...
    beforeSend: function() {
        $('#loading-results-message').show();
    },
    complete: function() {
        $('#loading-results-message').hide(); 
    }
});

这很好用。但是,如果没有太多数据要加载,请求只需要几分之一秒。在这种情况下,消息也只显示几分之一秒。这个动画发生得太快,很难识别它。因此,如果仅在请求需要一定时间,即至少几秒但不仅仅是几分之一秒时才能显示消息,那将是很好的。这有可能吗?顺便说一下,我在服务器端使用Django,如果这很重要的话。

2 个答案:

答案 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(); 
    }
});

文档

答案 1 :(得分:0)

我和@chris在这个解决方案上。但是,研究http://api.jquery.com/jQuery.ajaxSetup/

也可能值得您花些时间

这将使您不必为每个请求写入超时。