定期发送ajax请求
Periodically send ajax requests
有一个页面,我想定期使"后台" ajax请求。所以页面被加载,然后它应该在一定的时间内发送ajax请求。
我可能会使用cron。我以前从未使用过,所以我想知道它是否适合这项任务。还有其他更简单的方法吗?
注:时间延迟约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);
});
相关文章:
- ajax请求的顺序总是不同的
- 从ajax请求中获取javascript对象
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- JavaScript代码未正确检查ajax请求
- "日期“;AJAX请求返回的类型值未定义
- 在等待ajax请求时显示微调器并禁用页面
- 跨域ajax请求
- Ajax请求返回空的数据字符串,但首先得到了正确的数据
- Javascript-如何让脚本与Ajax请求的数据一起运行
- ajax请求成功,但可以'我看不到我的数据
- 如何将给定的curl命令复制为jquery ajax请求
- 为什么我能够从javascript控制台发送跨域ajax请求
- 一台特定计算机的Ajax请求数据未定义/失败
- 获取ajax请求的请求头
- 原型Ajax请求参数为嵌套json
- 可以't从AJAX请求中筛选数据
- jQuery Mobile Collapse上的AJAX请求
- 暂停函数执行流程,直到ajax请求完成