JQuery& Timer ::从Web服务更新超链接的文本

时间:2011-04-08 15:42:49

标签: jquery javascript-events timer settimeout setinterval

我要弄清楚如何做是在远程服务器上执行web服务,以确定有多少消息可用于读取和填充带有消息计数的超链接的文本。诀窍是我希望从定时器(例如每5分钟)发射一次。这就是我一直在搞乱的事情

$.ajax( {type:'Get',url:'http://foobar.com/ws',success:function(messageCount) 
    { 
        $('a.message').text(messageCount + ' Messages');
    }
})

但不可否认,当谈到javascript / jquery中的计时器时,我完全无能为力。任何帮助将不胜感激。

谢谢!

3 个答案:

答案 0 :(得分:3)

如果您想定期执行此操作,请使用setInterval

//create the timer (and save the unique id returned
//so we can stop it later if needed, using clearTimer())
//This will fire every 300,000 millisecs (= 5 mins) 
//and call the updateMessageCount function
var msgCounTimer = setInterval(updateMessageCount, 300000);

function updateMessageCount() {
    $.ajax({
            type:'GET',
            url:'http://foobar.com/ws',
            success:function(messageCount)
            { 
                $('a.message').text(messageCount + ' Messages');
            }
        });
}

但是,如果您希望在使用setTimeout后执行此操作 - 您也可以定期使用setTimeout,除非您每次都需要拨打电话来设置计时器。

我可以想到你可能想要使用setTimeout代替setInterval的一个案例就是当你在函数中做的工作被调用超时(updateMessageCount时我的示例如下所示,更长超过超时间隔,这会导致下一次超时(当使用setInterval时)似乎是瞬时的,因为定时器将每隔{{1}触发一次无论前一个超时调用的函数是否仍在执行,都会返回秒。相反,如果您希望确保在连续调用超时处理程序之间存在n毫秒(而不是每隔n毫秒调用一次超时处理程序),那么您应该使用{{1}而是在每次完成繁重的处理时进行设置。

注意 我看到你在示例中使用的是绝对网址,所以我想我会指出这一点,以防你不熟悉它 - 注意same-origin policy限制你的JavaScript向其他网域提出请求而不是它的起源。

答案 1 :(得分:3)

您需要使用setInterval()函数。这将以指定的间隔运行定义的函数。试试这个:

$(function() {
    setInterval("getDataFromWS()", 300000) // 300,000 miliseconds is 5 minutes
});

function getDataFromWS() {
    $.ajax({
        type:'Get',
        url:'http://foobar.com/ws',
        success:function(messageCount) { 
            $('a.message').text(messageCount + ' Messages');
        }
    })
}

答案 2 :(得分:0)

您需要查看Javascript中的setTimeout函数

例如var t=setTimeout("yourfunction()",10000);