【发布时间】:2020-06-09 08:57:56
【问题描述】:
我正在使用 AJAX 从我的网页调用 servlet。到目前为止一切都很好,我添加了一些代码来在 servlet 工作时显示加载屏幕,但这只工作第一次,之后,servlet 被调用,我可以更改光标,但等待屏幕不工作
CSS
#loading {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
opacity: 0.75;
background-color: #ffffff;
-webkit-transition: all .5s ease;
z-index: 3000;
display:none;
vertical-align: middle;
text-align: center;
}
#loading-img {
border: 16px solid #f3f3f3;
border-radius: 50%;
border-top: 16px solid #297bda;
width: 50px;
height: 50px;
margin: auto;
-webkit-animation: spin 2s linear infinite; /* Safari */
animation: spin 2s linear infinite;
position: absolute;
top: 50%; left: 50%;
transform: translate(-50%,-50%);
padding: 2rem;
}
HTML
<div id="loading">
<div id="loading-img"></div>
</div>
Javascript
$('#compare').click(function() {
//just the relevant part
$('#loading').show();
....
});
我打电话给
$('#loading').hide();
在.done(函数(数据)中。
正如我所说,代码已执行,但加载屏幕仅在第一次加载。事实上,在尝试解析加载 div 时,我第二次以及更进一步收到 null 。 我也尝试过
document.getElementById("loading").style.visibility = "hidden";
document.getElementById("loading").style.display = "none";
而不是使用 hide() 但结果相同。
有什么想法吗?
【问题讨论】:
-
你想让它工作
on loading吗? -
可能加载的 div 在 DOM 中不在它不工作的时候。您是否验证了 html 的来源在加载 div 不工作时是否可用。
-
我也尝试在准备好的文档中添加这个 $(document).ajaxStop(function () { $('#loading').hide(); }); $(document).ajaxStart(functio0n () { $('#loading').show(); });但再次只是第一次工作。我试图删除所有隐藏/显示并检查我是否可以获得 div,再次只是第一次返回......但我没有做任何事情来在 ajax 调用中删除它
-
加载可能永远不会触发,因为内容在第一次加载后被缓存...
标签: javascript jquery html css ajax