2014-09-13 143 views
-4

如何延遲3秒。開始之前發送請求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; 

}

+4

使用'setTimeout'和'clearTimeout' – 2014-09-13 14:10:03

回答

1

開始在三秒東西:

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

爲了避免其發生,在這之前的時間到了,這樣做:

clearTimeout(timer); 

在你情況下,你會想:

  1. 聲明timer事件處理程序之外(我假設你的代碼是在一些事件處理程序)

  2. 可能將其設置爲0下手(0的意思是「不定時」,瀏覽器是不允許使用0setTimeout返回值)

  3. 在處理程序,檢查位置之前,使用clearTimeout取消以往任何計時器

  4. 如果條件爲TR UE,使用上面的例子來調度功能在三秒鐘內

運行之後,如果條件爲真,並保持真實,Ajax調用會在三秒鐘後運行。如果它變爲真,但在三秒內再次變爲假,它將不會運行。

+0

可否請給我一些代碼? – 2014-09-13 14:15:43

+2

@การกรกรกรกกกนรกี:我認爲這是最好的,如果你要學會自己做,這就是爲什麼上面寫的事情是這樣的。 – 2014-09-13 14:17:11