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

时间:2015-03-03 05:13:43

标签: javascript jquery ruby-on-rails ajax twitter-bootstrap

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

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

以下是在文档加载时添加bootstrap模式的代码。

$(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错误回调中调用时,它没有显示模态弹出窗口 我检查过谷歌浏览器没有错误。此外,我尝试调用模态('show')控制台,它确实显示弹出窗口。此外,我尝试在文档加载时调用弹出窗口,然后模态弹出窗口也可以工作。


但只有从ajax错误回调调用它才会产生问题


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


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

1 个答案:

答案 0 :(得分:-2)

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

尝试检查状态代码