Javascript 引导对话框。模式(';隐藏';)不';隐藏模态

Javascript 引导对话框。模式(';隐藏';)不';隐藏模态,javascript,jquery,html,modal-dialog,bootbox,Javascript,Jquery,Html,Modal Dialog,Bootbox,我对bootbox.js modals有问题。我想使用bootbox.dialog在执行Ajax并等待响应时暂停UI。如果我使用dialog.modal('hide'),一切都会很酷inside bootbox.alert和confirm(单击OK后,它会隐藏dialog.modal),但我不想每次都确认它。当我使用dialog.modal('hide')在引导框外。警告并确认它不隐藏对话框。模式。。。问题在哪里?工作代码(隐藏模式)在success内,不工作代码在error var dialo

我对bootbox.js modals有问题。我想使用bootbox.dialog在执行Ajax并等待响应时暂停UI。如果我使用dialog.modal('hide'),一切都会很酷inside bootbox.alert和confirm(单击OK后,它会隐藏dialog.modal),但我不想每次都确认它。当我使用dialog.modal('hide')在引导框外。警告并确认它不隐藏对话框。模式。。。问题在哪里?工作代码(隐藏模式)在
success
内,不工作代码在
error

var dialog = bootbox.dialog({
            message: '<p class="text-center mb-0"><i class="fa fa-spin fa-cog"></i> Please wait while we do something...</p>',
            closeButton: false
        });
        var checkboxId = "#" + $(this).attr('id');
        var checked = $(this).is(":checked");
        if (checked) {
            $.ajax({
                url: url,
                type: "POST",
                data: { estimatedCostId: @Model.EstimatedCostID },
                success: function (data) {
                    if (!data.Success) 
                    {
                        bootbox.alert(data.ErrorMessage, function () {
                            dialog.modal('hide');
                        });
                        $(checkboxId).prop('checked', !checked);
                    }
                },
                error: function (request, status, error) {
                    dialog.modal('hide');
                    bootbox.alert("Błąd serwera");
                    $(checkboxId).prop('checked', !checked);
                }
            });
        }
var dialog=bootbox.dialog({
消息:“

我们正在做某事,请稍候…

”, 关闭按钮:false }); var checkboxId=“#”+$(this.attr('id'); var checked=$(this).is(“:checked”); 如果(选中){ $.ajax({ url:url, 类型:“POST”, 数据:{estimatedCostId:@Model.estimatedCostId}, 成功:功能(数据){ 如果(!data.Success) { bootbox.alert(data.ErrorMessage,函数(){ dialog.modal('hide'); }); $(checkboxId).prop('checked',!checked); } }, 错误:功能(请求、状态、错误){ dialog.modal('hide'); bootbox.alert(“Błd serwera”); $(checkboxId).prop('checked',!checked); } }); }
这很可能是一个时间问题。如果AJAX调用“太快”,则会在bootbox.dialog函数解析之前调用成功/失败回调。那么这个,

dialog.modal('hide');
在未定义的对象上被调用。在最近的一个项目中,我遇到了一个类似的问题,通过在事件中调用AJAX解决了这个问题,如下所示:

var checkboxId=“#”+$(this.attr('id');
var checked=$(this).is(“:checked”);
var dialog=bootbox.dialog({
消息:“

我们正在做某事,请稍候…

”, 关闭按钮:false }) //这就是变化 .on('show.bs.modal',function(){ 如果(选中){ $.ajax({ url:url, 类型:“POST”, 数据:{estimatedCostId:@Model.estimatedCostId}, 成功:功能(数据){ 如果(!data.Success) { bootbox.alert(data.ErrorMessage,函数(){ dialog.modal('hide'); }); $(checkboxId).prop('checked',!checked); } }, 错误:功能(请求、状态、错误){ dialog.modal('hide'); bootbox.alert(“Błd serwera”); $(checkboxId).prop('checked',!checked); } }); } });
您也可以用一种简单的方式使用它


bootbox.hideAll()

知道为什么在`函数上的.on中未定义
checkboxId',但在其外部显示了正确的值吗?
的上下文是错误的。将这些移动到对话框声明之前,它应该可以工作。