首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ajax Load在setTimeout中是递归的吗?

Ajax Load在setTimeout中是递归的吗?
EN

Stack Overflow用户
提问于 2018-12-03 14:05:34
回答 2查看 108关注 0票数 1

我在页面加载时使用了setTimeout内部的ajax加载函数,ajax加载函数会在特定的时间之后调用。

问题是,在setTimeout完成后,它一直在工作。它的工作原理类似于递归。

SetTimeout函数将被调用一次,但如果我在其中使用了ajax函数。它是递归工作的。

代码语言:javascript
运行
复制
 var pathname = window.location.pathname;
 setTimeout(function(){
   $('body').load(pathname + '#examplediv');
 },60000);

如何停止ajax load的递归调用?

EN

回答 2

Stack Overflow用户

发布于 2018-12-03 14:39:01

从评论中的对话中,我猜到了一个解决方案。这可能是您的确切解决方案。但对于其他人来说,一些时间是可行的。当我通过Ajax点击一个按钮/链接加载一个名为"ABC“的页面时。并从"ABC“页面调用$('body').load(url)。$('body').load(url)是我点击按钮/链接的次数。从互联网上读到,我需要解绑我创建的事件。所以我使用了这个,只是通过ajax加载页面。所以,我只使用了方法。它解决了我的问题。

代码语言:javascript
运行
复制
$("body").unbind(); 
var pathname = window.location.pathname;
 setTimeout(function(){
   $('body').load(pathname + '#examplediv');
 },60000);
票数 0
EN

Stack Overflow用户

发布于 2018-12-03 15:07:00

问题是您试图通过Ajax加载文件中的特定元素。这不可能。Ajax加载您所指向的整个文件。在您的示例中,该文件是您自己的索引文件,其中还包含setTimeout函数。因此,它每分钟都在重新加载。

要解决此问题,请创建一个新文件,例如popup.html。将#examplediv中的代码复制到这个新文件中。然后将其从索引文件中删除。现在使用:

代码语言:javascript
运行
复制
var pathname = window.location.pathname;
setTimeout(function(){
    $('body').load(pathname + '/popup.html');
},60000);

Ajax现在会在1分钟后将popup.html (只包含来自#examplediv的代码)加载到body元素中,而不是加载到您自己的整个索引文件中。这将会解决这个问题。

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

https://stackoverflow.com/questions/53588321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档