有时我的操作需要一段时间来计算。我希望能够在操作计算时显示一些东西,比如一种覆盖一切的灰色层,或者一个加载屏幕。但坦率地说,我不知道该怎么做。
我正在使用 MVC4 构建一个 MVC 应用程序,我从 jQuery 开始并接受任何建议。我该怎么做?
编辑
这是我一直在构建的页面示例:
<h2>Load cards</h2>
<script type="text/javascript">
$(document).ready(function () {
$("form").submit(function (event) {
event.preventDefault();
alert("event prevented"); // Code goes here
//display loading
$("#loadingDialog").dialog("open");
alert("dialog opened"); // Never reaches here.
$.ajax({
type: $('#myForm').attr('method'),
url: $('#myForm').attr('action'),
data: $('#myForm').serialize(),
accept: 'application/json',
dataType: "json",
error: function (xhr, status, error) {
//handle error
$("#loadingDialog").dialog("close");
},
success: function (response) {
$("#loadingDialog").dialog("close");
}
});
alert("ajax mode ended");
});
});
</script>
@using (Html.BeginForm())
{
<div class="formStyle">
<div class="defaultBaseStyle bigFontSize">
<label>
Select a Set to import from:
</label>
</div>
<div class="defaultBaseStyle baseFontSize">
Set: @Html.DropDownList("_setName", "--- Select a Set")<br/>
</div>
<div id="buttonField" class="formStyle">
<input type="submit" value="Create List" name="_submitButton" class="createList"/><br/>
</div>
</div>
}
这是我的 javascript 文件中的一段代码:
$(document).ready(function ()
{
$(".createList").click(function() {
return confirm("The process of creating all the cards takes some time. " +
"Do you wish to proceed?");
});
}
作为奖励(这不是强制性的),如果可能的话,我希望在用户确认后显示它。否则我不介意替换此代码。
编辑
按照下面 Rob 的建议,这是我的控制器方法:
[HttpPost]
public JsonResult LoadCards(string _submitButton, string _cardSetName)
{
return Json(true);
}
这是“旧的” ActionResult 方法:
[HttpPost]
public ActionResult LoadCards(string _submitButton, string _setName)
{
// Do Work
PopulateCardSetDDL();
return View();
}
截至目前,代码从未到达 Json 方法。它确实在那里输入了 ajax 方法(请参阅更新的代码),但我不知道如何解决这个问题。