首页 > 解决方案 > 模式未在 ajax 响应中关闭

问题描述

我正在为我的项目使用 mdbootstrap。我有一个复选框,我调用 ajax 来执行一些任务并从 php 获得响应,1 表示成功,0 表示失败。所以我在ajax调用之前显示模态以显示处理。模态显示但没有关闭 ajax 响应。

这是我的模态代码

  <div class="modal fade"  id="process" tabindex="-1" role="dialog" aria- 
 labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data- 
  keyboard="false">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <!--Content-->
        <div class="modal-content">
            <!--Body-->
            <div class="modal-body text-center mb-1">

                  <p>Please Wait</p>


            </div>
        </div>
        <!--/.Content-->
    </div>
</div>
 <script>
 status_val = 1;
 ac_no = 2;
 $('#process').modal();
  $.ajax({
      url:"reopen_account.php",
      type:"POST",
      data:{'reopen':'reopen','status_val':status_val,'ac_no':ac_no},
      success:function(output)
        {
           if (output==1) 
           {
              $('#process').modal('hide');
           }
           else{
               $('#process').modal('hide')
                alert('Error occured');
              }
        }
      }
    });
  </script>

我用过 .modal('hide'); 它不适合我。我哪里出错了。

标签: phpjqueryajaxmdbootstrap

解决方案


modal 当您在打开模态后立即尝试关闭时会出现此问题,这是因为模态未完全打开且模态状态仍为close.
所以,为了避免类似的事情再次发生,你可以设置 timeout 以确保你的 modal 已经完全打开!

$('#process').modal();
        $(document).ready(function () {
            $.ajax({
                url: "reopen_account.php",
                type: "POST",
                data: {'reopen': 'reopen', 'status_val': status_val, 'ac_no': ac_no},
                success: function (output) {
                    if (output != 1)
                        alert('Error occured');

                    setTimeout(function () {
                        $('#process').modal('hide');
                    }, 1000);
                },
            });
        });

推荐阅读