当我单击表单的提交按钮时,这会调用该startValidateFormParameters()
函数。
在此函数中,我使用BlockUI阻止 UI并运行 AJAX 请求来验证表单中的某些信息。
如果表单数据以某种方式出错,AJAXurl
会返回 403 错误响应,这会触发 AJAX 请求的error()
调用和 403 特定条件。
如果我alert()
在特定于 403 的错误调用中使用,则 UI 仍然被阻止(根据需要)。
我想做的——而不是使用alert()
对话框——是使用 BlockUI 的模态对话框,它看起来好多了。
但是,一旦调用错误代码,错误模式对话框就会弹出并几乎立即消失,因为 AJAX 调用停止并且 UI 被解除阻塞。
如何保持 UI 被阻止以保持显示错误模式?
以下是相关代码:
$(document).ready(function() {
...
$('#modalErrorOK').click(function() {
$.unblockUI();
return false;
});
});
function startValidateFormParameters() {
$.blockUI({
message: '<h1><span style="display:inline-block; vertical-align:middle"><img src="https://example.com/resources/indicator.gif"/></span>\
Validating form parameters...</h1>'
});
validateFormParameters();
}
function validateFormParameters() {
$.ajax({
url: "/validateFormParameters.pl",
type: "POST",
data: ({"formSummary" : JSON.stringify($.foobar.formSummary)}),
dataType: "JSON",
cache: false,
success: function (response){
alert(JSON.stringify(response));
},
error: function (request, status, error) {
if (request.status == 401) {
window.location.replace(document.location.href);
}
else if (request.status == 403) {
$('#modalErrorMsg').replaceWith('<div id="modalErrorMsg">' + request.responseText + '</div>');
$.blockUI({
message: $('#modalError')
});
}
else
alert(request.status + "\n" + request.responseText);
}
});
}
$(document).ajaxStop($.unblockUI);
我有一个 DOM 对象来保存错误对话框:
<div id="modalError" style="display:none; cursor: default">
<h1>Error</h1>
<div id="modalErrorMsg"></div>
<input type="button" id="modalErrorOK" value="OK" />
</div>