定期发送ajax请求

有一个页面,我想定期制作“背景”ajax请求。 所以页面加载然后它应该在一定的时间内发送ajax请求。

我可能会使用cron。 我以前从未使用过,所以我想知道它是否适合这项任务。 还有其他更简单的方法吗?

PS时间延迟约为5分钟。

由于在您发出AJAX请求的时间和收到完整响应的时间之间存在一个未知的延迟,因此通常更优雅的方法是在前一个AJAX调用完成之后的固定时间启动下一个AJAX调用。 这样,您还可以确保您的呼叫不重叠。

var set_delay = 5000, callout = function () { $.ajax({ /* blah */ }) .done(function (response) { // update the page }) .always(function () { setTimeout(callout, set_delay); }); }; // initial call callout(); 

Cron是在服务器端运行的,你使用的是HTML和AJAX,所以你应该在Javascript中解决这个问题:-)

通过使用像setInterval这样的东西你可以继续执行一个函数,你的情况可能就像通过AJAX轮询一个url:

 function updatePage(){ // perform AJAX request } setInterval(updatePage, 5000); 

根据您的rails版本,您可以使用periodically_call_remote ,否则您将需要@Bitterzoet描述的jquery替代方案。

这个问题的更多信息。

您可以在四秒内发送ajax请求,如下所示:

 setInterval(get_news, 4000); function get_news(){ $.ajax('/dashboards/get_news', { type: 'POST', success: function(result) { if(result > 0){ $('#div_1').text("See "+result+" new messages"); $('#div_1').show(); } else{ $('#div_1').css('display', 'none'); } }, error: function() { // alert("Error") } }); } 

你在用jquery吗? 如果是这样,您可以实现此方法:

 // first, you need asing a callback timer var timeout = 300; //milliseconds // this method contain your ajax request function ajaxRequest() { //function to ajax request $.ajax({ url: "/url/to/request/" }).done(function(data) { alert("response is: " + data); }); } $(document).on("ready", function(){ //this method will be called every 300 milliseconds setInterval(ajaxRequest, timeout); });