如何在$ .ajax()error()上显示BlockUI模态对话框?

| 当我单击表单的提交按钮时,这将调用
startValidateFormParameters()
函数。 在此功能中,我使用BlockUI阻止UI并运行AJAX请求以验证表单中的某些信息。 如果表单数据在某种程度上是错误的,则AJAX
url
返回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>
    
已邀请:
我想删除该行:
$(document).ajaxStop($.unblockUI);
Ajax完成后,将停止UI的解锁,您需要将其替换为:
$(document).ajaxSuccess($.unblockUI);
然后像往常一样在错误回调中调用模式对话框。 然后在对话框的“确定”按钮上添加一个“ 9”侦听器:
$(\'#modalErrorOK\').click(function() { 
    $.unblockUI(); 
    return false; 
});
您可能还需要致电:
$.unblockUI();
对于错误回调的其他部分,您将不显示该对话框。     

要回复问题请先登录注册