Javascript 如何使用AJAX每5秒刷新一次iFrame?
我正在尝试使用AJAX刷新iFrame,以便页面上的iFrame不会闪烁。下面的代码可以工作,但它占用了大量内存,大约2分钟后就会崩溃页面。我正在努力让它工作,这样它就不会使页面崩溃 我正在使用iFrame,其中有一个表,我希望它每2秒获取一次内容,以便更新它。下面的AJAX代码位于名为table.php的页面中。在我的主页上的iFrame中有一个名为dispatch1.php的页面(table.php)。表id为“thistable”Javascript 如何使用AJAX每5秒刷新一次iFrame?,javascript,jquery,html,ajax,iframe,Javascript,Jquery,Html,Ajax,Iframe,我正在尝试使用AJAX刷新iFrame,以便页面上的iFrame不会闪烁。下面的代码可以工作,但它占用了大量内存,大约2分钟后就会崩溃页面。我正在努力让它工作,这样它就不会使页面崩溃 我正在使用iFrame,其中有一个表,我希望它每2秒获取一次内容,以便更新它。下面的AJAX代码位于名为table.php的页面中。在我的主页上的iFrame中有一个名为dispatch1.php的页面(table.php)。表id为“thistable” 函数checkRequest(){ var interv
函数checkRequest(){
var interval=setInterval(函数(){
var请求=$.ajax({
url:“table.php”,
类型:“post”,
数据类型:“html”
});
request.done(函数(msg){
$(“#此表”).html(msg);
});
},2000)
}
我认为最好的方法是使用setTimeout,这意味着该函数将在上一次调用完成后5秒再次调用,这不是每5秒刷新一次页面,而是在上一次刷新后5秒刷新一次,因此不会使浏览器崩溃相反,setInterval将每五秒钟调用一次函数,而不管上一次调用是否已完成,因此这可能是问题所在
function checkRequest() {
var interval = setTimeout(function () {
$.ajax({
url: "table.php",
type: "post",
datatype: "html"
})
.done(function (msg) {
$("#thistable").html(msg);
})
.always(function () {
checkRequest();
});
}, 5000);
}
我相信您正在寻找的是
setInterval()
,您可以在文档中调用setInterval.ready
,或者根据需要单击按钮
在这里,setInerval将每5秒运行一次脚本
<script>
$(function(){
setInterval(function(){
repeatedAjaxRequest();
}, 5000);
});
function repeatedAjaxRequest(){
//Your ajax statements goes here
}
<script>
$(函数(){
setInterval(函数(){
repeatedAjaxRequest();
}, 5000);
});
函数repeatedAjaxRequest(){
//您的ajax语句在这里
}
查看链接了解更多信息不清楚此代码是iframe还是父窗口的一部分。顺便说一句,您需要在问题中提供更多上下文,例如,如何调用
checkRequest()
方法?顺便说一句,如果您的请求需要2秒以上才能完成,您将面临一些问题,可能是当前正在发生的情况。通常,要刷新iframe,只需更新src属性(可能使用timestamp来避免任何缓存问题),但我想这就是为什么不更新的原因:我正在尝试使用AJAX刷新iframe,以便页面上的iframe不会闪烁
是检查请求
一次又一次被调用……听起来像这样。如果它在2秒钟内被调用,则通过添加新的间隔时间来增加每次请求的数量。将setInterval
更改为setTimeout
如何,并在AJAX的成功回调中调用与setTimeout
相关的函数?这并不能保证延迟,但甚至不会使浏览器崩溃。我已经试过了,到目前为止它还在工作。在图像中,打开Chrome中的“网络”选项卡时显示它仍在以恒定速率传输,以MB或KB为单位递增。但是,这仍然没有导致浏览器内存不足和崩溃,所以这是好的。如果这是最终解决方案,我会让你知道。谢谢你的帮助!
<script>
$(function(){
setInterval(function(){
repeatedAjaxRequest();
}, 5000);
});
function repeatedAjaxRequest(){
//Your ajax statements goes here
}
<script>