2011-02-08 51 views
40

如何在特定时间段内调用Ajax请求? 我应该使用Timer插件还是jQuery有一个插件?调用jQuery Ajax请求每个X分钟

+2

你可以谷歌这个。 http://stackoverflow.com/questions/4542863/jquery-ajax-call-with-timer – Zabba 2011-02-08 07:06:39

+0

你做了什么? – PinoyStackOverflower 2013-07-17 05:44:51

回答

119

您可以使用内置的javascript setInterval。

var ajax_call = function() { 
    //your jQuery ajax code 
}; 

var interval = 1000 * 60 * X; // where X is your every X minutes 

setInterval(ajax_call, interval); 

,或者如果你是更简洁型...

setInterval(function() { 
    //your jQuery ajax code 
}, 1000 * 60 * X); // where X is your every X minutes 
3

没有普金要求。你只能使用jQuery的。

如果你想设置的东西在一个计时器,你可以使用JavaScript的setTimeoutsetInterval方法:

setTimeout (expression, timeout); 
setInterval (expression, interval) 

;

+1

setinterval实际上来自javascript而不是jquery。 – 2013-05-16 04:57:29

3

你可以在JavaScript中使用setInterval()

<script> 
//Call the yourAjaxCall() function every 1000 millisecond 
setInterval("yourAjaxCall()",1000); 
function yourAjaxCall(){...} 
</script> 
2

使用jQuery Every time Plugin。采用这个你可以做的Ajax调用的 “X” 时间段

$("#select").everyTime(1000,function(i) { 
//ajax call 
} 

你也可以使用的setInterval

+0

_everytime_的链接被破坏... – nbro 2016-07-21 09:05:23

5

有点晚了,但我用jQuery ajax方法。但是,如果我没有收到最后一次请求的回复,我不想每秒发送一次请求,所以我这样做了。

function request(){ 
      if(response == true){ 
       // This makes it unable to send a new request 
       // unless you get response from last request 
       response = false; 
       var req = $.ajax({ 
        type:"post", 
        url:"request-handler.php", 
        data:{data:"Hello World"} 
       }); 

       req.done(function(){ 
        console.log("Request successful!"); 

        // This makes it able to send new request on the next interval 
        response = true; 
       }); 
      } 

      setTimeout(request(),1000); 
     } 

     request(); 
0

我发现了一个非常好的jQuery插件,可以用这种类型的操作来缓解你的生活。您可以结帐https://github.com/ocombe/jQuery-keepAlive

$.fn.keepAlive({url: 'your-route/filename', timer: 'time'},  function(response) { 
     console.log(response); 
     });//