Javascript 定期发送ajax请求

Javascript 定期发送ajax请求,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,有一个页面,我想定期发出“后台”ajax请求。因此,加载页面后,它将在一定时间内发送ajax请求 我可能会用cron。我以前从未使用过,所以我想知道它是否适合那个任务。还有其他更简单的方法吗 另外,时间延迟大约为5分钟。Cron在服务器端运行,您使用的是HTML和AJAX,因此您应该用Javascript解决此问题:-) 通过使用类似“可以继续执行函数”的功能,您的情况可能类似于通过AJAX轮询url: function updatePage(){ // perform AJAX reque

有一个页面,我想定期发出“后台”ajax请求。因此,加载页面后,它将在一定时间内发送ajax请求

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


另外,时间延迟大约为5分钟。

Cron在服务器端运行,您使用的是HTML和AJAX,因此您应该用Javascript解决此问题:-)

通过使用类似“可以继续执行函数”的功能,您的情况可能类似于通过AJAX轮询url:

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

根据您的rails版本,您可能可以定期使用
调用\u remote
,否则您将需要@biterzoet描述的jquery替代方案


更多信息。

由于在发送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();

您可以在四秒钟内发送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.result)
你可以把它放在一个针对AJAX的
.done()
回调中,就像你通常做的那样。我过几天就到!详细说明@stecb的评论,尽量不要使用
setInterval()
ans
setTimeout()
版本的
eval
。始终通过引用或直接lambda直接使用函数。。ty;)顺便说一句,这也是一个范围问题,将其作为字符串传递将为该foo设置一个全局范围。