Ajax Load在setTimeout中递归工作



我在setTimeout中使用了ajax加载函数,在页面加载时,ajax加载函数会在特定时间后调用,

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

SetTimeout函数会被调用一次,但如果我在里面使用ajax函数,它会递归工作。

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

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

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

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

问题是您试图通过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元素中,而不是整个自己的索引文件中。这将解决问题。

最新更新