【问题标题】:Using beforeSend and complete in every instance of ajaxForm globally在全局 ajaxForm 的每个实例中使用 beforeSend 和 complete
【发布时间】:2019-10-21 17:19:32
【问题描述】:

我正在尝试在项目中的所有 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 时都会执行的地方。这可能吗?

【问题讨论】:

    标签: javascript jquery ajax ajaxform


    【解决方案1】:
    $(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/

    【讨论】:

      【解决方案2】:

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

      // 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()
      });
      

      【讨论】:

      • 我看到的问题是您必须 100% 确定所有 ajax 调用都会运行此代码。如果您稍后添加一些东西,您可能会遇到问题。
      • 这是一个很好的观点@DaniloKörber。我最好只使用 ajaxForm 调用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多