我想顯示一個加載屏幕,當用戶點擊一個按鈕來執行一個動作,因爲該動作需要10秒鐘運行。在MVC等待屏幕4
我在家裏控制器我有一個簡單的HTTP發佈:
[HttpPost]
public ActionResult PostMethod()
{
System.Threading.Thread.Sleep(1000);
return View();
}
在我看來,我有:
@{
ViewBag.Title = "Home Page";
}
@section featured {
<div id="divLoading" style="margin: 0px; padding: 0px; position: fixed; right: 0px; top: 0px; width: 100%; height: 100%; background-color: #666666; z-index: 30001; opacity: .8; filter: alpha(opacity=70);display:none">
<p style="position: absolute; top: 30%; left: 45%; color: White;">
Loading, please wait...<img src="../../Content/themes/base/images/ajax-loading.gif">
</p>
</div>
<section class="featured">
<div class="content-wrapper">
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
<h2>@ViewBag.Message</h2>
</hgroup>
</div>
</section>
}
<button onclick="JavascriptFunction();">HTTPPost Button</button>
<script type="text/javascript" language="javascript">
function JavascriptFunction() {
var url = '@Url.Action("PostMethod", "Home")';
$("#divLoading").show();
$.post(url,function (res) {
$("#content-wrapper").html(res);
$("#divLoading").fadeOut(100);
});
}
</script>
基本上Javascript函數顯示「divLoading」 DIV當用戶點擊按鈕。這工作正常。問題在於,在睡眠1秒鐘完成後,「divLoading」不會消失。所以屏幕就像加載時一樣,它應該恢復正常。
是這樣的:
return View()
線[HTTP]正常工作?或者是這條線:
$.post(url, null, function() {
//$("#PID")[0].innerHTML = data;
$("#divLoading").hide();
});
某處它不承認視圖被返回,它不應該顯示divLoading。
要調用隱藏 –
我把一個斷點在返回查看你檢查,如果你的JavaScript函數在執行時()行,當我執行它直接爲無效格畫面。我不去javascript的功能。 ()後面的 – user3022875
;放置像警報,並看看它是否出現 –