簡體   English   中英

SetTimeout 更新 MVC3 中的局部視圖隨機執行

[英]SetTimeout to update a Partial View in MVC3 executes randomly

我正在開發一個使用 asp.NET mvc3 的應用程序。 我創建了一個局部視圖,並在視圖中調用了這個局部視圖,這樣我就可以在不重新加載頁面的情況下更新一個 div。 我使用 setTimeout(但我也嘗試過 setInterval)來定義刷新時間。 問題是它不起作用,它隨機刷新div,而不是按照我設置的時間,並且沒有我能理解的邏輯,有時它刷新兩次,有時它等待,但永遠不會超過時間我設置。 這是局部視圖的代碼。 在視圖中,我只調用局部視圖。

<script type="text/javascript">
var st;
function updateDiv() {
    st = null;
    clearTimeout(st);
    console.log("posting");
    $.post('@Url.Action("RefreshSelfUpdatingPartial")', function (data) {
        $('#SelfUpdatingPartialDiv').hide().slideDown("slow").html(data);
        //wait 15 seconds
        st = setTimeout(updateDiv, 15000);
    });
}
updateDiv();
</script>
<div id="SelfUpdatingPartialDiv">
test

</div>

“這是局部視圖的代碼。在視圖中我只調用局部視圖。”

如果上述所有代碼都在部分視圖中,這是否意味着$.post()將把上述所有內容加載到<div>中,從而導致上述內容的第二個副本嵌套在自身內部? 隨着超時的運行,它只會在自身內部嵌套越來越多的副本。

我建議您將上述所有內容移到主視圖中,然后部分視圖應僅返回您想在<div>中看到的任何文本(而不是 JavaScript)。

(如果這不是我引用的聲明的意思,那么請更新您的帖子以更清楚地解釋上述代碼的位置以及$.post('@Url.Action("RefreshSelfUpdatingPartial"))實際返回的內容。)

(另外,就像亞歷克斯所說,在將它傳遞給clearTimeout()之前,不要將你的st變量設置為null - 盡管我認為你可以刪除這兩行,因為你不需要在它已經觸發后清除超時。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM