如何在开始发送请求ajax之前延迟3秒


How to delay 3 sec. before start send request ajax?

如何在启动发送请求ajax之前延迟3秒?

这意味着在ajax发送请求之前,用户必须在页面底部停留3秒。

如果用户停留在页面底部的时间少于3秒,ajax将不会发送请求。

我该如何应用此代码?

if(($(window).scrollTop() + $(window).height() == $(document).height())){         
    $('#loading').show();
    $.ajax({
        url: 'some_page.php',
        type: 'POST',
        data: $('#form_id').serialize(),
        cache: false,
        success: function(data){
           $("#loading").fadeOut("slow");
           $('#content_data').append(data);
            }
        });
    return false;

}

要在三秒内启动某些东西:

var timer = setTimeout(function() {
    //...your code here...
}, 3000); // 3000ms = 3 seconds

为了防止这种情况发生,在时间结束之前,这样做:

clearTimeout(timer);

在你的情况下,你会想:

  1. 在事件处理程序之外声明timer(我假设您的代码在某个事件处理程序中)

  2. 可能将其设置为0以开始(0表示"没有计时器",浏览器不允许使用0作为setTimeout的返回值)

  3. 在您的处理程序中,在检查位置之前,使用clearTimeout取消任何以前的计时器

  4. 如果条件为真,则使用上面的示例来安排函数在3秒内运行

然后,如果条件变为true并保持为true,ajax调用将在三秒后运行。如果它变为真,但在三秒内再次变为假,它将不会运行。