【问题标题】:JQuery Bootstrap Modal not closing after get call调用后 JQuery Bootstrap 模态未关闭
【发布时间】:2019-10-07 12:32:05
【问题描述】:

我有一个从 Java 后端获取数据列表的 JQuery。这完美地工作。我要做的是在后端 bean 运行时显示加载模式,并在加载模式完成并返回数据时隐藏加载模式。

我已经尝试过 ('toggle')、('hide') .close click() .done() .fail() .always() 如下所示,但似乎没有任何效果。

点击按钮时显示模态,可以看到数据加载到html页面的选择列表中,但是获取完成后加载模态并没有关闭。

<div class="modal fade" id="loadingModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header"><h4>Loading....</h4></div>
            <div class="modal-body">
                <div class="spinner-grow text-primary" role="status">
                    <span class="sr-only">Loading...</span>
                </div>
            </div>
        </div>
    </div>
</div>

<button type="button" class="btn btn-primary btn-sm" onclick="getContent()">Get Content</button>

<select class="form-control form-control-sm" id="primaryList"></select>

<script type="text/javascript">
    function getContent() {
        $('#loadingModal').modal('show');

        $.get("/admin/getPrimaryList/", function(data) {
            if(data.length == 0)
            {
                $('#loadingModal').modal('hide');
                return false;
            }
            data.forEach(function(item, i) {
                var option = "<option value='" + item + "'>" + item + "</option>";
                $("#primaryList").append(option);
            });
        }).done(function() {
            $("#loadingModal").modal('hide');
        }).fail(function() {
            $("#loadingModal").modal('hide');
        }).always(function() {
            $("#loadingModal").modal('hide');
        });

        $("#loadingModal").modal('hide');
    };
</script>

谢谢!

【问题讨论】:

  • 我在其中找不到 ID 为 loadingModal 的任何元素或类 close 的任何元素。
  • 抱歉,我现在更新了问题以展示我是如何尝试的。以前的代码是另一种尝试,也没有奏效。
  • 尝试在您的done, fail,always 调用中添加console.log("test"),看看您是否可以在控制台中看到该消息
  • 我已将 console.log("test 1") 放入完成,console.log("test 2") 放入失败,console.log("test 3") 始终放入。打印测试 1 和测试 3,但模式保持打开状态。我几乎感觉到代码运行得很快,而当模式“显示”时,“隐藏”已经运行,因此保持打开状态。不确定这是否可能。

标签: jquery bootstrap-4 bootstrap-modal


【解决方案1】:

它对我来说很好用。这是我的小提琴:https://jsfiddle.net/davidliang2008/v7kwo8x1/23/

我的小提琴和您的示例之间的唯一区别是我使用jQuery 来连接点击事件。请检查您的代码在运行时是否抛出任何javascript 错误。

在成功回调结束时放置隐藏模式调用

$.get('URL', function(data) {
    ...
    $('#loadingModal').modal('hide');
});

或在done 回调中起作用。

$.get('URL', function(data) {
    ...

}).done(function() {
    $('#loadingModal').modal('hide');
});

【讨论】:

  • 谢谢,但我没有任何乐趣。我认为对支持数据 .get 的调用需要很长时间,然后 JQuery 没有赶上,或者执行得很快。不知道它是什么,但我没有错误并且模式没有关闭。
  • 谢谢,我为我的网站使用了 SBAdmin2 布局,它附带的 css 或 js 文件一定是导致问题的原因。我在模板之外尝试了您的解决方案,它可以 100% 工作。
猜你喜欢
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 2015-04-10
  • 2018-12-13
  • 1970-01-01
  • 2021-08-22
  • 2019-01-09
  • 1970-01-01
相关资源
最近更新 更多