jQuery.ajaxPrefilter()| jqueryAPI 2.2 中文手册- AspRain.cn 致力于Web开发技术翻译整理

jQuery API 2.2.0

jQuery.ajaxPrefilter()

分类:Ajax > 底层接口

返回: undefined

jQuery.ajaxPrefilter( [dataTypes ], handler )

描述:在每个请求被发送之前,或者在$.ajax()加工每个请求之前,操作自定义Ajax选项,或者修改已有的选项。

加入于: 1.5
jQuery.ajaxPrefilter( [dataTypes ], handler )
  • dataTypes
    类型:String
    一个可选的字符串,它包含了一个或多个用空格分隔的dataType。
  • handler
    类型:FunctionPlainObject options, PlainObject originalOptions, jqXHR jqXHR )
    一个处理函数,用来设置针对将来的Ajax请求的默认值。

一个用$.ajaxPrefilter注册的典型的预筛选器看起来会如此:

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

其中

  • options是关于HTTP请求的选项
  • 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;
  }
});

预筛选器可以用来修改已有的选项。举个例子,下面的代理通过http://mydomain.net/proxy/发起跨域请求:

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

如果提供了可选的dataTypes参数,预筛选器只会应用到用了这个指定的dataTypes的请求上。举个例子,下面的代码只把绑定的预筛选器应用到JSON请求和script请求上:

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

$.ajaxPrefilter()方法还可以通过返回dataType,把一个请求重定向到另一个dataType上。举个例子,下面的代码把一个请求设置成"script",如果这个URL在一个自定义的isActuallyScript()函数上有很多特定的属性:

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

这将确保并非只有这个请求会被视为"script",而且也保证了所有专门附加到script 数据类型预筛选器,也将被应用于它。

如果网页上不能运行示例,请点击http://www.asprain.cn/jQueryAPI/jquery.ajaxprefilter.htm查看示例。

如果你觉得本文档对你有用,欢迎给翻译作者支付宝打赏,支持翻译作者源源不断翻译更多有用的技术文档。