`

jQuery.ajaxPrefilter

阅读更多

描述: 在每个请求之前被发送和$.ajax()处理它们前处理,设置自定义Ajax选项或修改现有选项。

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

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

注册一个典型使用$.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的应用

    在jQuery库中,`ajaxPrefilter` 是一个非常实用的功能,它允许我们在发送任何AJAX请求之前对其进行拦截和处理。这个功能对于实现全局的请求处理,比如数据预处理、错误处理或者像题目中所述的时间检查等,是非常方便...

    网络收集100个常用的jquery特效和插件打包下载

    `$.ajaxStart()`和`$.ajaxStop()`可以监听Ajax请求的开始和结束,`$.ajaxPrefilter()`和`$.ajaxTransport()`允许自定义Ajax处理逻辑。 8. **响应式设计**: 针对不同设备和屏幕尺寸,jQuery有插件如`jQuery....

    jQuery 2.1.0 版本.zip

    3. AJAX功能的扩展:增加了`$.ajaxPrefilter()`和`$.ajaxTransport()`,允许自定义AJAX请求的预处理和传输方式,提供了更大的灵活性。 4. 错误处理改进:增强了错误处理机制,能更好地捕获和处理异常情况。 总的来...

    jquery-1.7.2-vsdoc.js

    4. **AJAX更新**:增加了`$.ajaxPrefilter()`和`$.ajaxTransport()`,允许自定义请求处理和传输方式。 `vsdoc`(Visual Studio Document)是微软为Visual Studio开发的一种文档注释格式,主要用于JavaScript库。`...

    jQuery复习2021.6(1).docx

    jQuery 是一个广泛使用的JavaScript库,它极大地简化了对DOM(文档对象模型)的操作,提供了丰富的API来处理事件、动画和Ajax交互。以下是基于提供的文件内容的详细知识点: 1. **append()方法和appendTo()方法**:...

    最新JQuery类库 -- JQuery1.4

    - 提供了`$.ajaxPrefilter()`和`$.ajaxTransport()`,使得开发者可以自定义Ajax请求的处理逻辑,增强了Ajax功能的可扩展性。 8. **文档更新**: - 随着1.4版本的发布,官方文档也进行了全面更新,为开发者提供了...

    jquery1.11.0手册

    $.ajaxPrefilter([type],fn) $.ajaxSetup([options]) serialize() serializearray() 工具 浏览器及特性检测 $.support $.browser1.9- $.browser.version $.boxModel 数组和对象操作 $.each(object,...

    jQuery源码分析(1.7)

    1. **前置过滤器**:jQuery提供了`$.ajaxPrefilter()`方法,可以在发送请求之前对请求选项进行修改。 2. **请求分发器**:`$.ajaxTransport()`允许注册特定类型的请求处理器。 3. **示例**:注册前置过滤器。 ``...

    jquery 经典实例15个

    12. **AJAX预加载**: 使用`$.ajaxPrefilter()`和`$.ajaxSetup()`可以全局配置Ajax请求,例如设置默认的请求头或者预加载数据。 13. **表单处理**: jQuery提供方便的方法来获取或设置表单元素的值,如`$('input')....

    jQuery API 中文文档(适用jQuery 1_0 - jQuery 2_0)

    - **插件系统(Plugins)**:jQuery的插件机制扩展了其功能,如$.ajaxPrefilter(), $.extend()等。 **版本差异** jQuery 2.0版本相比1.x,主要去除了对旧版IE浏览器的支持,因此体积更小,运行速度更快。但这也...

    jQuery全部案例

    - 插件如`$.ajaxPrefilter()`和`$.ajaxSuccess()`可扩展Ajax功能。 6. **实际应用案例** - **导航菜单**: 使用jQuery实现响应式导航菜单,通过事件监听和CSS操作实现展开和折叠。 - **轮播图**: 使用动画效果和...

    JQuery_1.4_API (chm中文版)

    - `$.ajaxPrefilter()` 和 `$.ajaxTransport()` 用于自定义Ajax处理。 - `$.fn.extend()` 扩展jQuery对象的方法。 - `$.extend()` 合并对象属性。 通过阅读`jQuery_1.4_API.CHM`,开发者可以深入了解这些功能的详细...

    jQuery1.3中文API+jQuery1.2中文API

    8. **插件系统**:jQuery的插件生态系统丰富,扩展了其功能,如`$.ajaxPrefilter()`和`$.ajaxComplete()`等。 在阅读这两个版本的API文档时,不仅要看每个方法的用法,还要理解它们在实际场景中的应用。同时,要...

    最新jquery1.4实例学习参考指南

    7. **插件扩展**:jQuery拥有丰富的插件生态系统,如`$.ajaxPrefilter()`和`$.ajaxSuccess()`等,可以扩展和定制Ajax行为,以及用于表格排序的DataTables,图片轮播的bxSlider等,极大地丰富了jQuery的功能。...

    jQuery经典使用15例

    一个经典的例子是`$.ajaxPrefilter()`和`$.ajaxComplete()`,用于全局控制Ajax请求。 9. **AJAX JSONP(JSON with Padding)**:对于跨域请求,jQuery通过JSONP技术绕过同源策略。这通常涉及在`$.ajax()`或`....

    Jquery1.7中文帮助手册

    - `$.ajaxPrefilter()`和`$.ajaxTransport()`用于更细粒度地控制Ajax请求。 - `$.Deferred`对象的改进,使得异步编程更加直观。 以上只是jQuery 1.7中部分关键知识点的概述,这份中文帮助手册将详细解释每个方法、...

    jQuery如何防止Ajax重复提交

    jQuery提供了一种优雅的方式来处理这个问题,通过使用`$.ajaxPrefilter`方法,我们可以添加一个全局的过滤器来控制Ajax请求的行为。 首先,我们需要创建一个对象`pendingRequests`来存储正在执行的Ajax请求。这个...

    jQuery调用 WebService的实现代码

    还可以使用`.ajaxPrefilter()`或`.ajaxSetup()`全局配置Ajax请求的默认选项。 总结,jQuery调用WebService涉及到前端的Ajax请求和后端的WebService接口。通过理解jQuery的Ajax机制,我们可以方便地实现前后端的数据...

Global site tag (gtag.js) - Google Analytics