2

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

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

现在,我需要一个 javascript/jquery 侦听器来侦听该 json 中的任何更改(真或假)。我需要让那个监听器每秒运行一次吗?是否可以?

谢谢。

编辑:

我一直在重读我的帖子,这让我很震惊,我只是在想我脑子里只有一个客户。我的网络服务中的每次添加、编辑、删除都会将“更新”设置为 true,每次收到数据请求时,我都会将其设置为 false。但是其他客户呢?当他们发送请求时,它已经是错误的,所以他们不会更新它。有任何想法吗?谢谢

4

2 回答 2

4

您可以使用两种方法来做到这一点:

  1. 网络套接字;或者
  2. 设置间隔函数。

下面是一个 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

一些链接:

于 2012-07-22T03:14:18.067 回答
0

您有两个 HTTP 选项:轮询服务器,或使用彗星请求。如果您正在轮询,最好在请求中包含上次更新时间,以便服务器可以过滤比该时间更早的任何事件。这样,您就不需要为每个客户的每个事件保存一个额外的标志。

于 2012-07-22T03:15:02.727 回答