在运行AJAX请求时,我使用NProgress来显示。它工作得很好,但是我有一个AJAX请求,我想在后台运行,而不向用户显示进度条。
我将它绑定到jQuery的ajaxSend和ajaxComplete事件,这样所有的$.ajax()调用都会显示NProgress。
$(document).bind("ajaxSend", function() {
NProgress.start();
}).bind("ajaxComplete", function() {
NProgress.done();
});我正在进行的AJAX调用如下所示:
setInterval(function() {
// Setting to not display nprogress here?
$.ajax({
type: "POST",
url: "testurl.aspx",
data: post,
async: true,
cache: false,
success: function(msg) {
;//
},
complete: function(msg) {
;//
},
error: function(msg) {
;//
}
});
}, 10000);发布于 2019-09-11 18:31:22
若要禁用单个请求的全局AJAX事件处理程序,可以将global属性设置为false。
setInterval(function() {
$.ajax({
global: false, // add this
type: "POST",
url: "testurl.aspx",
data: post,
cache: false,
// other properties...
});
}, 10000);不过,还有几件事要注意。首先,bind()在很久以前就被废弃了。现在应该使用on()来绑定事件处理程序。另外,还要检查您正在使用的jQuery版本。如果您需要支持遗留IE,那么它应该是v3.x,如果您需要遗留IE支持,也可以使用jQuery.migrate。
其次,AJAX轮询是一种反模式,即使在10秒的时间间隔相对较高时也是如此,因为它会导致服务器上不必要的负载。如果这是针对一个面向公共的站点,并且您希望保持UI和服务器端数据的密切同步,那么请考虑使用类似于WebSockets的东西。
https://stackoverflow.com/questions/57894898
复制相似问题