$.ajaxPrefilter([type],fn)

返回值

undefined

概述

在每个请求发送之前以及由 $. Ajax ()处理之前处理自定义 Ajax 选项或修改现有选项。

参数见 '$.ajax' 说明。

参数

参数 类型 说明 示例值
type

v1.5
包含一个或多个空格分隔数据类型的可选字符串

handler(options, originalOptions, jqXHR)

v1.5
为未来的 Ajax 请求设置默认值的处理程序。

示例

示例一

描述:使用 $. ajaxPrefilter ()的预过滤器注册

jQuery 代码

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

注意:

  • options 是请求选项
  • originalOptions 是提供给 ajax 方法的选项,未经修改,因此没有来自 ajaxSettings 的缺省值
  • jqXHR 是请求的 jqXHR 对象
示例二

描述: 当需要处理自定义选项时,预过滤器是一个完美的选择。给定下面的代码,例如,对 $的调用。如果自定义的 abortOnRetry 选项设置为 true,ajax ()将自动中止对相同 URL 的请求

jQuery 代码

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

描述: 预过滤器也可以用来修改现有的选项,例如,下面的代理通过 http://mydomain.net/proxy/过滤器进行跨域请求。

jQuery 代码

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

描述: 如果提供了可选的 dataTypes 参数,则预过滤器将仅应用于指定 dataTypes 的请求。例如,下面只对 JSON 和脚本请求应用给定的预过滤器

jQuery 代码

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

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

jQuery 代码

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

这样不仅可以确保将请求视为“脚本” ,而且可以确保将所有专门附加到脚本 dataType 的前过滤器都应用到该请求。