我有一个有2个标签的网页。这些选项卡在单击时显示/隐藏div。这两个选项卡都使用jquery对php脚本进行ajax调用,以显示来自不同数据库的结果。因此,选项卡1显示了食物列表,第二个选项卡显示了价格列表。它设置为每30秒自动刷新一次。我的问题是,当我在两个选项卡之间单击时,我希望没有单击的选项卡停止ajax调用,这样只有一个ajax调用在运行,基本上是为了优化目的。我该怎么做呢?我是否要使用setInterval让它每隔30秒运行第一个tab ajax调用,然后当单击另一个选项卡时,就会调用一个函数在运行第一个setinterval的id上运行clearInterval?那么反之亦然,如果单击第一个选项卡,它将清除第二个选项卡ajax调用的间隔?
发布于 2011-02-22 01:24:37
基本上,你所做的事情是没有理由的。
我更喜欢,如果你有需要加载的东西,需要在一段时间后加载,你应该调用这两个选项卡,但只询问,如果有什么变化。因此,假设您每10秒调用一次服务器,如果发生更改,返回false或true并不是什么大问题,如果返回yes,则只需同步这两个项。
如果不需要同步这两个项目,为什么不在单击选项卡时同步它们呢?
为了用户体验,最好经常请求更改,但仅在需要时才同步内容。
如果你做了所有这些,不要使用setInterval而是setTimeout,并且在你的函数中再次调用setTimeout,setInterval就不太好了;-)
发布于 2011-02-22 01:48:40
反复拉动还是在新事物出现时拉动是一个很好的讨论,但我暂时不会去讨论它。
jQuery UI选项卡具有绑定选项卡更改行为的方法。我会把它连接起来,这样当一个选项卡变得可见时,它就会被服务器内容填满,间隔就会开始重复这个行为。我将存储jQuery的AJAX函数的返回值(旧版jQ上的XHR本身,1.5版中的jQ XHR包装器)和启动时间间隔后返回的计时器ID。
然后,每当加载新选项卡时,我都会在XHR/wrapper上调用abort(),在计时器ID上调用clearInterval,然后对新选项卡中的前一个选项卡执行相同的操作--通过AJAX填充(存储XHR)并开始间隔(存储ID)。
https://stackoverflow.com/questions/5073003
复制相似问题