首页 > 解决方案 > Ajax Load 在 setTimeout 中递归工作?

问题描述

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

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

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

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

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

标签: javascriptjqueryajax

解决方案


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

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

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

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


推荐阅读