尝试加载局部视图时 SetInterval 和 SetTimeout 不起作用

SetInterval and SetTimeout not working when trying to load a Partial View

我正在尝试使用 JQueryASP.Net MVC 应用程序中重新加载 PartialView

我的代码:

<div class="partial">
     @Html.Action("GetRemainingSeats", "Layout")
</div>
<script src="@Url.Content("~/Scripts/jquery-1.10.2.min.js")"></script>
<script type="text/javascript">
            setTimeout(
            $(function () {
                setInterval(function () { $('#partial').load('@Html.Action("GetRemainingSeats", "Layout")'); }, 5000)
            }), 6000);
</script>

部分视图已正确加载,但紧随其后,它将再次执行操作,而无需等待 setTimeout 函数计时器结束。之后它将停止做任何事情。

编辑:PartialView 里面有一个 table,上面有电影院的放映以及每场放映的剩余座位数。所以我希望它能更新几秒钟,这样员工就可以看到还有多少座位可供观看。

我正在使用超时和 setinterval 函数,因为在 pageload 上调用了操作。之后我希望它在开始间隔之前等待几秒钟

我真的不明白为什么你同时使用 timeout 和 setinterval 方法,因为这两种方法都是第一次使用,如果你想在 4 秒后刷新 div,请坚持使用 setInterval 方法,否则如果你想只刷新一次,使用setTimeout方法

var wait = setTimeout(
$(function () {
 var s = setInterval(function () {       
         clearInterval(s); // you need to remove the interval if you want to run it once
         $('#partial').load('/Layout/GetRemainingSeats'); 

     }, 4000)
}), 6000);

此外,您需要更改

<script src="@Url.Content("~/Scripts/jquery-1.10.2.min.js")"></script>

 <script src='@Url.Content("~/Scripts/jquery-1.10.2.min.js")'></script>

您的脚本正试图将 html 加载到一个不存在的元素中(您只有一个带有 class="partial" 的元素,而不是 id="partial"。您还需要使用 @Url.Action(),而不是 @Html.Action()(这是调用子操作的助手 - 它不会生成 .load() 方法所期望的 url。您需要进行以下更改

html

<div id="partial"> // change this to specify the id attribute
    @Html.Action("GetRemainingSeats", "Layout")
</div>

脚本

$(function () {
    setInterval(function () {
        $('#partial').load('@Url.Action("GetRemainingSeats", "Layout")'); }, 5000) // use @Url.Action()
    }), 6000);