首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过Jquery启动/停止Ajax调用

通过Jquery启动/停止Ajax调用
EN

Stack Overflow用户
提问于 2011-02-22 00:57:43
回答 2查看 429关注 0票数 1

我有一个有2个标签的网页。这些选项卡在单击时显示/隐藏div。这两个选项卡都使用jquery对php脚本进行ajax调用,以显示来自不同数据库的结果。因此,选项卡1显示了食物列表,第二个选项卡显示了价格列表。它设置为每30秒自动刷新一次。我的问题是,当我在两个选项卡之间单击时,我希望没有单击的选项卡停止ajax调用,这样只有一个ajax调用在运行,基本上是为了优化目的。我该怎么做呢?我是否要使用setInterval让它每隔30秒运行第一个tab ajax调用,然后当单击另一个选项卡时,就会调用一个函数在运行第一个setinterval的id上运行clearInterval?那么反之亦然,如果单击第一个选项卡,它将清除第二个选项卡ajax调用的间隔?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-22 01:24:37

基本上,你所做的事情是没有理由的。

我更喜欢,如果你有需要加载的东西,需要在一段时间后加载,你应该调用这两个选项卡,但只询问,如果有什么变化。因此,假设您每10秒调用一次服务器,如果发生更改,返回false或true并不是什么大问题,如果返回yes,则只需同步这两个项。

如果不需要同步这两个项目,为什么不在单击选项卡时同步它们呢?

为了用户体验,最好经常请求更改,但仅在需要时才同步内容。

如果你做了所有这些,不要使用setInterval而是setTimeout,并且在你的函数中再次调用setTimeout,setInterval就不太好了;-)

票数 0
EN

Stack Overflow用户

发布于 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)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5073003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文