我要弄清楚如何做是在远程服务器上执行web服务,以确定有多少消息可用于读取和填充带有消息计数的超链接的文本。诀窍是我希望从定时器(例如每5分钟)发射一次。这就是我一直在搞乱的事情
$.ajax( {type:'Get',url:'http://foobar.com/ws',success:function(messageCount)
{
$('a.message').text(messageCount + ' Messages');
}
})
但不可否认,当谈到javascript / jquery中的计时器时,我完全无能为力。任何帮助将不胜感激。
谢谢!
答案 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);