我已经使用 jQuery 成功实现了与此类似的场景。基本上,我使用beforeSend
: 函数来显示“请稍候”类型的页面。这是播放中的基本代码(我不这样做,您也可以使用AsyncController
基类使动作异步):
<script type="text/javascript">
$(document).ready(function() {
$('#create').bind('click', function() {
saveFundProperty();
});
});
// main functions
function saveFundProperty() {
var url = '<%= Url.Action("Create", "FundProperty") %>';
var params = { fundId: $("#FundID").val(), propertyId: $("#PropertyID").val() };
SendAjax(url, params, beforeQuery, saveFundPropertyResponse);
}
function beforeQuery() {
var url = '<%= Url.Action("Wait", "FundProperty") %>';
$("#statusMsg").load(url);
}
function saveFundPropertyResponse(data) {
if (data.length != 0) {
if (data.indexOf("ERROR:") >= 0) {
$("#statusMsg").html(data).css('backgroundColor','#eeaa00');
}
else {
$("#statusMsg").html(data);
}
}
}
</script>
希望这可以帮助。
该SendAjax
方法纯粹是一个包装函数,以使事情更加一致。这是完整的:
<script type="text/javascript">
function SendAjax(urlMethod, jsonData, beforeSendFunction, returnFunction, dataType, contentType) {
$.ajaxSetup({ cache: false });
dataType = dataType || "text"; // default return type
contentType = contentType || "application/x-www-form-urlencoded"; // default input type
$.ajax({
type: "POST",
url: urlMethod,
data: jsonData,
dataType: dataType,
contentType: contentType,
beforeSend: function() {
if(beforeSendFunction!==null)
beforeSendFunction();
},
success: function(data) {
// Do something interesting here.
if (data != null && returnFunction!==null) {
returnFunction(data);
}
},
error: function(xhr, status, error) {
// Boil the ASP.NET AJAX error down to JSON.
var err = eval("(" + xhr.responseText + ")");
// Display the specific error raised by the server
alert(err.Message);
}
});
}
</script>
[编辑] - 不确定 SendAjax 格式发生了什么。希望很容易复制/粘贴...