jQuery.ajaxPrefilter()
返回: undefined
jQuery.ajaxPrefilter( [dataTypes ], handler )
描述:在每个请求被发送之前,或者在$.ajax()加工每个请求之前,操作自定义Ajax选项,或者修改已有的选项。
加入于: 1.5
jQuery.ajaxPrefilter( [dataTypes ], handler )- dataTypes类型:String一个可选的字符串,它包含了一个或多个用空格分隔的dataType。
- handler一个处理函数,用来设置针对将来的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 数据类型预筛选器,也将被应用于它。