问题描述
从此代码开始,将触发我们项目上的ajax事件,并将其添加到应用程序标头的jsp中。这是一个通用的代码,因此我们无法在此代码中进行更改
2020-01-01 02:00:00
#ajaxStatus是包含加载程序的div的ID,而 div 是
var secondsRemaining = 60
let timer = Timer.scheduledTimer(withTimeInterval: 1.0,repeats: true,block: { timer in
print(secondsRemaining)
secondsRemaining -= 1
})
ajax 请求是
$( document ).ajaxSend(function( event,request,settings ) {
$("#ajaxStatus").show()
});
$( document ).ajaxStop(function( event,settings ) {
$("#ajaxStatus").hide()
});
$( document ).ajaxError(function( event,settings ) {
$("#ajaxStatus").hide()
});
所以我想要删除ajax的beforeSend()中的加载程序。我们尝试了.unbind()和.hide(),但是没有用。起作用的是.remove(),但是如果我们删除加载器,则会从DOM中删除整个加载器div,因此我们需要在ajax成功函数之后再次添加该div,而无需刷新页面。我们可以在不刷新页面的情况下再次添加该div吗?还是我们可以仅将加载程序隐藏在beforeSend()中而不删除它?
解决方法
我认为您可以将global属性设置为false,以防止使用全局处理程序(ajaxSend,Stop等)
$.ajax({
url: "${createLink(controller: 'test',action: 'test123')}",global: false,...
;-)
,请使用jQuery CSS方法尝试以下解决方案。
$.ajax({
url: "${createLink(controller: 'test',data: "${true}",type: "POST",dataType: "json",beforeSend:function(){
$('#ajaxStatus').css('display','block');
},success: function (data) {
$('#ajaxStatus').css('display','none');
},complete: function (data) {
}
});