如何在$ .ajax()error()上显示BlockUI模态对话框?
|
当我单击表单的提交按钮时,这将调用
startValidateFormParameters()
函数。
在此功能中,我使用BlockUI阻止UI并运行AJAX请求以验证表单中的某些信息。
如果表单数据在某种程度上是错误的,则AJAXurl
返回403错误响应,从而触发AJAX请求的error()
调用和403特定条件。
如果在403特定错误调用中使用alert()
,则UI仍处于阻塞状态(根据需要)。
我想做的是使用BlockUI的模态对话框,而不是使用ѭ3对话框,它看起来要好得多。
但是,一旦调用了错误代码,错误模态对话框就会弹出并几乎立即消失,因为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>
没有找到相关结果
已邀请:
1 个回复
布埃郝卞簿
Ajax完成后,将停止UI的解锁,您需要将其替换为:
然后像往常一样在错误回调中调用模式对话框。 然后在对话框的“确定”按钮上添加一个“ 9”侦听器:
您可能还需要致电:
对于错误回调的其他部分,您将不显示该对话框。