客户端向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 !!显示弹出窗口
答案 0 :(得分:-2)
仅显示状态代码为401 ,表示未经授权的访问
尝试检查状态代码