【问题标题】:Disabling ajaxSetup Defaults for some AJAX Calls禁用某些 AJAX 调用的 ajaxSetup 默认值
【发布时间】:2018-04-26 00:27:27
【问题描述】:

我构建的公司 Intranet 大量使用 AJAX 调用来加载表和其他资源。默认情况下,我会出现一个带有加载 gif 的模式对话框,让用户知道页面正在加载。我用 jQuery 的 ajaxSetup 设置了这个默认值。

有几个地方我使用了带有自动完成功能的搜索框。我注意到每次输入一个字符时都会出现加载对话框。有什么方法可以为该调用禁用 ajaxSetup?

感谢您的帮助!

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    您应该能够在每次 ajax 调用时传递一个新的选项对象,以便在需要时覆盖默认设置。

    不确定你的模态是否在 beforeSend 或你有什么,但我想你会从下面得到图片。

    $.ajax({ beforeSend: function() { /* do nothing */ }....
    

    【讨论】:

      【解决方案2】:

      我猜您为全局 Ajax 事件设置了一个处理程序来创建对话框。可以针对特定请求禁用这些事件,如下所示(来自 jQuery 文档):

      全球事件

      这些事件被广播到 DOM 中的所有元素,触发任何可能正在监听的处理程序。您可以像这样监听这些事件:

      $("#loading").bind("ajaxSend", function(){
         $(this).show();
       }).bind("ajaxComplete", function(){
         $(this).hide();
       });
      

      对于特定的 Ajax 请求,可以通过传入全局选项来禁用全局事件,如下所示:

      $.ajax({
         url: "test.html",
         global: false,
         // ...
       });
      

      【讨论】:

        【解决方案3】:

        禁用某些 AJAX 调用的 ajaxSetup Defaults 有一行添加

        beforeSend: function(){$.event.trigger('ajaxStart');}
        

        beforeSend (Local Event) = 该事件在Ajax请求开始前触发,允许你修改XMLHttpRequest对象

        【讨论】:

          【解决方案4】:

          为了避免使用这种方式的某些特定 URL

          $.ajaxSetup({
           beforeSend: function (xhr)
                      {   
                              if(this.url !="specific urls"){
          //code here
                              }
                      },
          })();
          

          【讨论】:

            【解决方案5】:

            使用 $.ajax() 调用来覆盖在 $.ajaxSetup() 中建立的默认值。

            【讨论】:

              猜你喜欢
              • 2011-07-13
              • 1970-01-01
              • 1970-01-01
              • 2017-07-05
              • 2011-01-31
              • 1970-01-01
              • 2016-01-31
              • 2020-01-24
              • 2020-06-10
              相关资源
              最近更新 更多