Ajax Load是否在setTimeout中递归工作?

时间:2018-12-03 06:05:34

标签: javascript jquery ajax

我在页面加载时在setTimeout内部使用了ajax加载函数,该ajax加载函数将在特定时间后调用

问题是setTimeout完成后它一直在工作。它像递归一样工作。

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

listview

如何停止递归调用ajax负载?

2 个答案:

答案 0 :(得分:0)

根据评论中的对话,我想有一个解决方案。它可能是您的确切解决方案。但是有些时间对其他人有用。 当我通过单击按钮/链接通过Ajax加载名为“ ABC”的页面时。然后从该“ ABC”页面调用$('body')。load(url)。 $('body')。load(url)是我单击按钮/链接的次数。 从互联网上阅读后,我了解到我需要取消绑定创建的事件。所以我只用ajax加载页面。 所以,我只是用方法。并且解决了我的问题。

$("body").unbind(); 
var pathname = window.location.pathname;
 setTimeout(function(){
   $('body').load(pathname + '#examplediv');
 },60000);

答案 1 :(得分:0)

问题是您试图通过Ajax在文件中加载特定元素。那不可能Ajax加载您指向它的整个文件。就您而言,该文件是您自己的索引文件,其中还包括setTimeout函数。因此,它会持续每分钟重新加载。

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

var pathname = window.location.pathname;
setTimeout(function(){
    $('body').load(pathname + '/popup.html');
},60000);

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