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

我想在ajax请求期间发生错误401时显示引导模态。所以在我里面放了那个modal('show')但是bootstrap modal被触发了。

这是在文档加载时添加引导模式的代码。

$(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错误回调调用时,它没有显示模式弹出窗口。
我已经检查了谷歌浏览器没有错误。我也尝试调用modal('show')控制台,它确实显示弹出窗口。我也尝试在文档加载时调用弹出窗口,然后也进行模式弹出窗口。


但是仅当从ajax错误回调中调用时,它才会产生问题



更多发现:
1.仅在生产模式下启动Rails服务器时,才会发生此问题
2.仅显示背景,而不显示模式。单击背景上的任意位置后,将显示模态。那时背景关闭并且显示模式弹出窗口。
3.此问题仅在野生动物园中发生。
4.仅当野生动物园选项卡不清晰时,才会出现此问题。如果我在同一选项卡上,则会显示弹出窗口。但是如果让我说第二个选项卡,并且弹出式窗口显示在第一个选项卡上。如果我切换回第一个标签,那么我只会看到背景幕。


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

最佳答案

仅在状态代码为401时显示,表示未经授权的访问

尝试检查状态码

关于javascript - 在Ajax回调(Safari)中调用bootstrap modal show,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28824561/

10-14 11:45
查看更多