在ajax回调(safari)中调用bootstrap模式显示

calling bootstrap modal show in ajax callback (safari)

本文关键字:调用 bootstrap 模式 显示 ajax 回调 safari      更新时间:2023-09-26

客户端向rails控制器心跳发出请求。心跳以成功200OK或错误(未经授权)401进行响应。客户端每500毫秒发送一次此请求。

我想在ajax请求期间出现错误401时显示引导模式。所以我在里面放了那个模态("ow"),但引导模态被触发了。

以下是用于在文档加载时添加引导模式的代码。

$(function(){
  $('body').append('<div id="confirm-logout-modal" class="modal hide fade" style="display: none;"> '
                  <div class="modal-header"> '
                    <h3 class="modal-title">Logout</h3> '
                  </div> '
                  <div class="modal-body"> '
                    <p> '
                      <span class="modal-main-message">You have been logged out</span> '
                    </p> '
                  </div> '
                  <div class="modal-footer"> '
                    <button id="btn-confirm" class="btn btn-success">Okay</button> '
                  </div> '
                </div> '
               ');
  $('#btn-confirm').click(function(){
    $('#confirm-logout-modal').modal('hide');
    window.location.reload();
  });
});

以下是显示ajax错误回调引导程序的代码

function check_heartbeat(){
  $.ajax({
    type: 'GET',
    url: '/heartbeat',
    success: function(data){
      void(0);
    },
    error: function(response) {
      if(response.status == 401){
        clearInterval(heartbeat_id);
        $('#confirm-logout-modal').modal('show');;
      }
    }
  });
};

但这里的问题是,当从ajax错误回调调用时,它不会显示模式弹出
我已经检查了谷歌铬没有错误。我还试着调用模态("显示")控制台,它确实显示弹出窗口。我还试着在文档加载时调用弹出窗口,然后模式弹出窗口也能工作。


但只有当从ajax错误回调调用时,才会出现问题


更多发现:
1.只有在生产模式下启动rails服务器时才会出现此问题
2.只显示背景,不显示模态。单击背景上的任何位置后,都会显示模态。该时间背景关闭并显示模式弹出窗口
3.这个问题只发生在狩猎中
4.只有当safari选项卡失焦时,才会出现此问题。如果我在同一个选项卡上,则会显示弹出窗口。但如果我在第二个选项卡上,弹出窗口显示在第一个选项卡上。如果我切换回第一个选项卡,我只看到背景。


这是JSFiddle代码http://jsfiddle.net/5y7725v5/RUn代码并快速切换到其他选项卡。等待一段时间,然后切换回原始选项卡。看不到弹出窗口。现在运行代码并保持在同一个选项卡上哇!!弹出窗口显示

只有当状态代码为401时才显示,这意味着未经授权访问

尝试检查状态代码