当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JQuery jQuery.ajaxPrefilter()用法及代码示例


用法
jQuery.ajaxPrefilter(  [dataTypes ], handler ) => undefined

说明:处理自定义 Ajax 选项或在发送每个请求之前修改现有选项,然后再由$.ajax().

  • 添加的版本:1.5jQuery.ajaxPrefilter( [dataTypes ], handler )

    • dataTypes
      类型:String
      包含一个或多个空格分隔的数据类型的可选字符串
    • handler
      类型:Function(PlainObject选项,PlainObject originalOptions,jqXHRjqXHR)
      为未来的 Ajax 请求设置默认值的处理程序。

使用$.ajaxPrefilter() 的典型预过滤器注册如下所示:

$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
  // Modify options, control originalOptions, store jqXHR, etc
});

其中:

  • options 是请求选项
  • originalOptions 是提供给 $.ajax() 方法的选项,未经修改,因此没有来自 ajaxSettings 的默认值
  • jqXHR是请求的jqXHR对象

当需要处理自定义选项时,预过滤器非常适合。例如,给定以下代码,如果自定义 abortOnRetry 选项设置为 true ,对 $.ajax() 的调用将自动中止对同一 URL 的请求:

var currentRequests = {};
 
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
  if ( options.abortOnRetry ) {
    if ( currentRequests[ options.url ] ) {
      currentRequests[ options.url ].abort();
    }
    currentRequests[ options.url ] = jqXHR;
  }
});

预过滤器也可用于修改现有选项。例如,以下代理 cross-domain 通过 https://mydomain.net/proxy/请求:

$.ajaxPrefilter(function( options ) {
  if ( options.crossDomain ) {
    options.url = "https://mydomain.net/proxy/" + encodeURIComponent( options.url );
    options.crossDomain = false;
  }
});

如果提供了可选的dataTypes 参数,则预过滤器将仅应用于具有指定数据类型的请求。例如,以下仅将给定的预过滤器应用于 JSON 和脚本请求:

$.ajaxPrefilter( "json script", function( options, originalOptions, jqXHR ) {
  // Modify options, control originalOptions, store jqXHR, etc
});

$.ajaxPrefilter() 方法还可以通过返回该数据类型将请求重定向到另一个数据类型。例如,如果 URL 具有在自定义 isActuallyScript() 函数中定义的某些特定属性,则以下将请求设置为 "script":

$.ajaxPrefilter(function( options ) {
  if ( isActuallyScript( options.url ) ) {
    return "script";
  }
});

这不仅可以确保请求被视为"script",而且还可以确保将所有专门附加到脚本 dataType 的预过滤器应用于它。

相关用法


注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 jQuery.ajaxPrefilter()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。