有一个页面,我希望定期发出“背景”ajax请求。因此,页面被加载,然后它应该在一定的时间内发送Ajax请求。定期发送ajax请求
我可能会使用cron。我从来没有使用过,所以我想知道它是否适合这项任务。还有其他更简单的方法吗?
P.S.时间延迟将约为5分钟。
有一个页面,我希望定期发出“背景”ajax请求。因此,页面被加载,然后它应该在一定的时间内发送Ajax请求。定期发送ajax请求
我可能会使用cron。我从来没有使用过,所以我想知道它是否适合这项任务。还有其他更简单的方法吗?
P.S.时间延迟将约为5分钟。
由于在发送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);
'的setInterval(updatePage,5000);' – stecb
阐述@ stecb的评论,做你最好永远不要使用'eval'的setInterval的''版本()ANS'的setTimeout ()'。直接使用函数,直接引用或直接使用lambda。 –
你们是对的,我已经更新了答案。 – Bitterzoet
根据您的轨道版本你可以使用periodically_call_remote
,否则你会需要一个@Bitterzoet描述了jQuery选择。
更多信息in this question。
您可以通过四个第二个发送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);
});
我在哪里放置更新页面部分的代码?像'$('#my_id')。text(“data is”+ data.result);' –
您可以将它放在对AJAX的'.done()'回调中,就像您通常一样。 –
oo,你来自菲律宾的男人。我会在几天后在那里! –