[英]Periodically send ajax requests
有一个页面,我想定期做出“背景”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);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.