Javascript中的window.setInterval不能多次运行函数
我想每5000毫秒更新一次局部视图(例如) 我用下面的代码来做:Javascript中的window.setInterval不能多次运行函数,javascript,asp.net-mvc,timer,Javascript,Asp.net Mvc,Timer,我想每5000毫秒更新一次局部视图(例如) 我用下面的代码来做: window.setInterval(function () { $.get("/Features/ShowDateTime").then(function (r) { $('#divDateTime').html(r); }); }, 5000) 此函数每5000毫秒运行一次(通过在内部函数中使用debugger命令进行检查),但ShowDateTime操作运行一次(通过在其控制器中的操作中使用
window.setInterval(function () {
$.get("/Features/ShowDateTime").then(function (r) {
$('#divDateTime').html(r);
});
}, 5000)
此函数每5000毫秒运行一次(通过在内部函数中使用debugger
命令进行检查),但ShowDateTime
操作运行一次(通过在其控制器中的操作中使用断点进行检查)
那么,问题出在哪里呢?假设代码本身正在工作,那么很可能在后续调用中恢复了缓存数据。你需要缓存你的电话。一种简单的方法是将当前时间戳简单地附加到URL的末尾:
window.setInterval(function () {
$.get("/Features/ShowDateTime?" + Date.now()).then(function (r) {
$('#divDateTime').html(r);
});
}, 5000)
这将导致浏览器每次都认为它是不同的URL,因此它不会缓存并返回相同的结果。您的代码看起来不错。它应该每5秒钟就点击一次端点。我还建议将
$(“#divDateTime”)
选择器移到外部,并将其存储在变量中,然后在setInterval代码段中使用该变量可能是一个缓存问题。。。尝试$。获取(“/Features/ShowDateTime?“+Date.now())
,看看您在IE中测试时是否有任何变化?你能试试chrome吗?嘿@Shyju。这与$('divDateTime')
无关。在此之前,必须运行操作。在铬,真正的工作!为什么不直接使用.ajax()
并设置缓存:false
,我认为它更容易阅读,并向其他程序员显示意图。将日期附加到url的结尾似乎是一种非常有技巧的方法。@RyanWilson设置缓存:false
…将基于时间戳的值添加到url时也会发生这种情况是的,修复了语法错误。?
需要在引号中。您也可以将ajax()
与cache:false
一起使用,但是我提到的缓存破坏方法是通用的,无论您使用哪种ajax库/方法,因此我喜欢将其推广到特定于库的配置@RyanWilson@samanime我明白你为什么这么做了。既然它是普遍存在的,我就能看出它的价值。