客户端向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/