描述: 在每个请求之前被发送和$.ajax()
处理它们前处理,设置自定义Ajax选项或修改现有选项。
-
添加的版本: 1.5jQuery.ajaxPrefilter( [dataTypes ], handler(options, originalOptions, jqXHR) )
注册一个典型使用$.ajaxPrefilter()
的预过滤器,看起来像这样:
1
2
3
|
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) { // Modify options, control originalOptions, store jqXHR, etc }); |
以下的情况下:
-
options
是请求的选项 -
originalOptions
值作为提供给Ajax方法未经修改的选项,因此,没有ajaxSettings
设置中的默认值 -
jqXHR
是请求的jqXHR对象
当自定义选项,需要提前处理,预过滤器(Prefilters)是一个完美的选择。给定下面的代码, 例如,如果自定义abortOnRetry
选项被设置为true
,那么调用$.ajax()
会自动中止请求相同的URL:
1
2
3
4
5
6
7
8
9
10
|
var currentRequests = {}; $.ajaxPrefilter(function( options, originalOptions, jqXHR ) { if ( options.abortOnRetry ) { if ( currentRequests[ options.url ] ) { currentRequests[ options.url ].abort(); } currentRequests[ options.url ] = jqXHR; } }); |
预过滤器(Prefilters)也可以被用来修改已经存在的选项。例如,下面的代理服务器跨域请求http://mydomain.net/proxy/:
1
2
3
4
5
6
|
$.ajaxPrefilter( function( options ) { if ( options.crossDomain ) { options.url = "http://mydomain.net/proxy/" + encodeURIComponent( options.url ); options.crossDomain = false; } }); |
如果提供可选的dataTypes
参数,那么预滤器(prefilter)将只会对满足指定 dataTypes 的请求有效。例如, 以下仅适用于JSON和 script 请求给定的预过滤器:
1
2
3
|
$.ajaxPrefilter( "json script", function( options, originalOptions, jqXHR ) { // Modify options, control originalOptions, store jqXHR, etc }); |
$.ajaxPrefilter()
方法也可以将请求重定向到另一个数据类型,并且返回该数据类型。 例如,如果 URL 中含有在 isActuallyScript() 函数中设定的指定属性,那么设置成一个“script”的请求:
1
2
3
4
5
|
$.ajaxPrefilter(function( options ) { if ( isActuallyScript( options.url ) ) { return "script"; } }); |
这将确保请求被认为是“script”类型的,而且也保证了所有对 script 数据类型有效的预前过滤器,也将被应用到它。
备注实例代码:
jQuery.ajaxPrefilter(function(settings) {
if (settings.type != "GET") {
var data = settings.data;
if (!data)
data = "";
if (data.length > 0)
data += "&";
data += "csrf_token=" + $("meta[name=csrf_token]").attr("content");
settings.data = data;
}
});
相关推荐
在jQuery库中,`ajaxPrefilter` 是一个非常实用的功能,它允许我们在发送任何AJAX请求之前对其进行拦截和处理。这个功能对于实现全局的请求处理,比如数据预处理、错误处理或者像题目中所述的时间检查等,是非常方便...
`$.ajaxStart()`和`$.ajaxStop()`可以监听Ajax请求的开始和结束,`$.ajaxPrefilter()`和`$.ajaxTransport()`允许自定义Ajax处理逻辑。 8. **响应式设计**: 针对不同设备和屏幕尺寸,jQuery有插件如`jQuery....
3. AJAX功能的扩展:增加了`$.ajaxPrefilter()`和`$.ajaxTransport()`,允许自定义AJAX请求的预处理和传输方式,提供了更大的灵活性。 4. 错误处理改进:增强了错误处理机制,能更好地捕获和处理异常情况。 总的来...
4. **AJAX更新**:增加了`$.ajaxPrefilter()`和`$.ajaxTransport()`,允许自定义请求处理和传输方式。 `vsdoc`(Visual Studio Document)是微软为Visual Studio开发的一种文档注释格式,主要用于JavaScript库。`...
jQuery 是一个广泛使用的JavaScript库,它极大地简化了对DOM(文档对象模型)的操作,提供了丰富的API来处理事件、动画和Ajax交互。以下是基于提供的文件内容的详细知识点: 1. **append()方法和appendTo()方法**:...
- 提供了`$.ajaxPrefilter()`和`$.ajaxTransport()`,使得开发者可以自定义Ajax请求的处理逻辑,增强了Ajax功能的可扩展性。 8. **文档更新**: - 随着1.4版本的发布,官方文档也进行了全面更新,为开发者提供了...
$.ajaxPrefilter([type],fn) $.ajaxSetup([options]) serialize() serializearray() 工具 浏览器及特性检测 $.support $.browser1.9- $.browser.version $.boxModel 数组和对象操作 $.each(object,...
1. **前置过滤器**:jQuery提供了`$.ajaxPrefilter()`方法,可以在发送请求之前对请求选项进行修改。 2. **请求分发器**:`$.ajaxTransport()`允许注册特定类型的请求处理器。 3. **示例**:注册前置过滤器。 ``...
12. **AJAX预加载**: 使用`$.ajaxPrefilter()`和`$.ajaxSetup()`可以全局配置Ajax请求,例如设置默认的请求头或者预加载数据。 13. **表单处理**: jQuery提供方便的方法来获取或设置表单元素的值,如`$('input')....
- **插件系统(Plugins)**:jQuery的插件机制扩展了其功能,如$.ajaxPrefilter(), $.extend()等。 **版本差异** jQuery 2.0版本相比1.x,主要去除了对旧版IE浏览器的支持,因此体积更小,运行速度更快。但这也...
- 插件如`$.ajaxPrefilter()`和`$.ajaxSuccess()`可扩展Ajax功能。 6. **实际应用案例** - **导航菜单**: 使用jQuery实现响应式导航菜单,通过事件监听和CSS操作实现展开和折叠。 - **轮播图**: 使用动画效果和...
- `$.ajaxPrefilter()` 和 `$.ajaxTransport()` 用于自定义Ajax处理。 - `$.fn.extend()` 扩展jQuery对象的方法。 - `$.extend()` 合并对象属性。 通过阅读`jQuery_1.4_API.CHM`,开发者可以深入了解这些功能的详细...
8. **插件系统**:jQuery的插件生态系统丰富,扩展了其功能,如`$.ajaxPrefilter()`和`$.ajaxComplete()`等。 在阅读这两个版本的API文档时,不仅要看每个方法的用法,还要理解它们在实际场景中的应用。同时,要...
7. **插件扩展**:jQuery拥有丰富的插件生态系统,如`$.ajaxPrefilter()`和`$.ajaxSuccess()`等,可以扩展和定制Ajax行为,以及用于表格排序的DataTables,图片轮播的bxSlider等,极大地丰富了jQuery的功能。...
一个经典的例子是`$.ajaxPrefilter()`和`$.ajaxComplete()`,用于全局控制Ajax请求。 9. **AJAX JSONP(JSON with Padding)**:对于跨域请求,jQuery通过JSONP技术绕过同源策略。这通常涉及在`$.ajax()`或`....
- `$.ajaxPrefilter()`和`$.ajaxTransport()`用于更细粒度地控制Ajax请求。 - `$.Deferred`对象的改进,使得异步编程更加直观。 以上只是jQuery 1.7中部分关键知识点的概述,这份中文帮助手册将详细解释每个方法、...
jQuery提供了一种优雅的方式来处理这个问题,通过使用`$.ajaxPrefilter`方法,我们可以添加一个全局的过滤器来控制Ajax请求的行为。 首先,我们需要创建一个对象`pendingRequests`来存储正在执行的Ajax请求。这个...
还可以使用`.ajaxPrefilter()`或`.ajaxSetup()`全局配置Ajax请求的默认选项。 总结,jQuery调用WebService涉及到前端的Ajax请求和后端的WebService接口。通过理解jQuery的Ajax机制,我们可以方便地实现前后端的数据...