Javascript中的window.setInterval不能多次运行函数

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操作运行一次(通过在其控制器中的操作中使用

我想每5000毫秒更新一次局部视图(例如)

我用下面的代码来做:

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我明白你为什么这么做了。既然它是普遍存在的,我就能看出它的价值。