在全局的每个 ajaxForm 实例中使用 beforeSend 和 complete



我正在尝试在项目中的所有ajaxForms上使用beforeSend和complete函数。我想这样做,而不是在整个项目中添加确切的代码。

我已经能够在每个表单的基础上使用以下代码完成此操作。

beforeSend: function() {
$('.lightbox').append('<div id="page-loader" style="display:block"><div class="page-loader-overlay"></div><div class="page-loader-content-container"><div class="top-corners"><div></div></div><div class="middle"><div class="page-loader-content">Loading...</div></div><div class="bottom-corners"><div></div></div></div></div>');
},
complete: function(xhr) {
$('.lightbox#page-loader').remove()
},  

我希望能够将该代码放在一个地方,每次提交ajaxForm时都会执行。这可能吗?

$(function(){
$.ajaxSetup({
beforeSend: function() {
$('.lightbox').append('<div id="page-loader" style="display:block"><div class="page-loader-overlay"></div><div class="page-loader-content-container"><div class="top-corners"><div></div></div><div class="middle"><div class="page-loader-content">Loading...</div></div><div class="bottom-corners"><div></div></div></div></div>');
},
complete: function(xhr) {
$('.lightbox#page-loader').remove()
},  
});
});

请使用函数 ajaxsetup。当你这样做时,它将在所有ajax函数中有效。

推荐人 :https://api.jquery.com/jQuery.ajaxSetup/

如果有人遇到类似的困境,这就是我想出的,它似乎可以解决问题。到目前为止,我还没有发现任何问题。

// add loading masks on form submits
$( document ).ajaxSend(function() {
$('.lightbox').append('<div id="page-loader" style="display:block; z-index: 999"><div class="page-loader-overlay"></div><div class="page-loader-content-container"><div class="top-corners"><div></div></div><div class="middle"><div class="page-loader-content">Loading...</div></div><div class="bottom-corners"><div></div></div></div></div>');
});
$(document).ajaxSuccess(function() {
$('#page-loader').remove()
});

最新更新