我有一个Web服务,我在其中获取数据并在客户端填充它。截至目前,我有一个按钮,当使用ajax get点击时,将从Web服务获取数据。在我的网络服务上,我有一个维护,我可以在其中添加,编辑或删除数据。我想要做的是让我的客户端每次添加,编辑或删除数据时都自动从我的Web服务中获取数据,这样它就会向客户端显示准确的数据。
这就是我的想法。在我的Web服务上,我将有一个json,它将告诉true / false数据是否已更新(将由客户端获取)。因此,每次添加,编辑,删除都会将其变为true,并且每次客户端获取该数据时,它都将变为false。
现在,我需要一个javascript / jquery监听器来监听json中的任何变化(true或false)。我需要让听众每秒都跑一次吗?有可能吗?
感谢。
编辑:
我一直在重读我的帖子,它打击了我,我只想到我心中只有一个客户。我的Web服务中的每次添加,编辑和删除都会将“updated”变为true,每当我收到数据请求时,我都会将其设置为false。但其他客户呢?当他们发送请求时,它已经是假的,所以他们不会更新它。有任何想法吗?感谢
答案 0 :(得分:4)
您可以使用以下两种方法执行此操作:
以下是setInterval()的示例。
// just a control var...
var gen = 1;
// call the function repeatedly in 5 seconds of interval
// this call returns an id that can be used to stop the calls
var id = setInterval(function(){
// function body...
alert( "making an ajax request...(" + gen + ")" ); // here you call your webservice
gen++;
// just want to stop it, but you wont need this.
if ( gen == 10 ) {
clearInterval( id );
}
}, 5000 ); // 5000 miliseconds == 5 seconds
一些链接:
答案 1 :(得分:0)
您有两个HTTP选项:轮询服务器或使用comet请求。如果您正在轮询,最好在请求中包含上次更新的时间,以便服务器可以过滤任何早于该时间的事件。这样,您就不需要为每个客户端为每个事件保存额外的标志。