Javascript / Jquery上的监听器

时间:2012-07-22 03:10:30

标签: javascript ajax jquery listener

我有一个Web服务,我在其中获取数据并在客户端填充它。截至目前,我有一个按钮,当使用ajax get点击时,将从Web服务获取数据。在我的网络服务上,我有一个维护,我可以在其中添加,编辑或删除数据。我想要做的是让我的客户端每次添加,编辑或删除数据时都自动从我的Web服务中获取数据,这样它就会向客户端显示准确的数据。

这就是我的想法。在我的Web服务上,我将有一个json,它将告诉true / false数据是否已更新(将由客户端获取)。因此,每次添加,编辑,删除都会将其变为true,并且每次客户端获取该数据时,它都将变为false。

现在,我需要一个javascript / jquery监听器来监听json中的任何变化(true或false)。我需要让听众每秒都跑一次吗?有可能吗?

感谢。

编辑:

我一直在重读我的帖子,它打击了我,我只想到我心中只有一个客户。我的Web服务中的每次添加,编辑和删除都会将“updated”变为true,每当我收到数据请求时,我都会将其设置为false。但其他客户呢?当他们发送请求时,它已经是假的,所以他们不会更新它。有任何想法吗?感谢

2 个答案:

答案 0 :(得分:4)

您可以使用以下两种方法执行此操作:

  1. 网络插座;或
  2. setInterval函数。
  3. 以下是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请求。如果您正在轮询,最好在请求中包含上次更新的时间,以便服务器可以过滤任何早于该时间的事件。这样,您就不需要为每个客户端为每个事件保存额外的标志。