javascript - Ajax Load 在 setTimeout 中递归工作?
问题描述
我在页面加载时在setTimeout中使用了ajax加载函数,ajax加载函数将在特定时间后调用,
问题是它在 setTimeout 完成后一直在工作。它像递归一样工作。
SetTimeout 函数将被调用一次,但如果我在其中使用 ajax 函数。它以递归方式工作。
var pathname = window.location.pathname;
setTimeout(function(){
$('body').load(pathname + '#examplediv');
},60000);
如何停止递归调用ajax加载?
解决方案
问题是您试图通过 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
元素中,而不是您自己的整个索引文件中。这将解决问题。
推荐阅读
- swift - 即使值不是 nil,也会发生 nil 崩溃
- android - 为什么我的 APK 下载会覆盖已安装的无关 apk 文件?
- c++ - .cpp 文件中未定义的引用错误
- android - Ionic 4-后台用户位置跟踪
- delphi - 当 TFormatSetting 设置为 en-US 时,如何解决“10,000.00”不是有效的浮点值
- javascript - Disqus Iframe 未在 AMP 安装时调整大小
- typescript - 强制执行可选类型打字稿
- sql-server - 访问表单无法传递视图的主键(到 SQL 服务器)
- c# - 使用变量作为资源名称的一部分
- reactjs - React:为表格列标题提供工具提示