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

时间:2014-09-13 14:09:12

标签: javascript php jquery ajax

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

这意味着用户必须在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;

}

1 个答案:

答案 0 :(得分:1)

在三秒内开始:

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

为了防止它发生,在此时间结束之前,请执行以下操作:

clearTimeout(timer);

在您的情况下,您需要:

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

  2. 可能将其设置为0以开始(0表示“无计时器”),不允许浏览器使用0作为{{1的返回值}})

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

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

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