jQuery中ajaxPrefilter的应用

本文介绍如何使用jQuery的ajaxPrefilter过滤所有Ajax请求,当请求参数中开始时间超过结束时间时,终止该请求并提示错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jQuery的定义了一个ajax过滤器ajaxPrefilter,通过该过滤器可以过滤通过jQuery相应的ajax函数发送的ajax请求。

在项目中,很多地方存在指定开始时间、结束时间来获取该时间区间内某些值随时间变化的过程线的需求,我们可以定义一个通用的ajaxPrefilter来过滤所有ajax请求,当开始时间超过结束时间的时候,便将该ajax请求abort。

 1 $.ajaxPrefilter(function (options, originalOptions, jqXHR) {  //tm1、tm2表示开始时间、结束时间
 2     var requestType, params, startTime, endTime;
 3     requestType = (originalOptions.type || "").toUpperCase(); //jsonp的时候type为undefined
 4     if (requestType === "GET") {
 5         params = originalOptions.data ? $.param(originalOptions.data) : originalOptions.url;
 6     } else if (requestType === "POST") {
 7         params = $.param(originalOptions.data);
 8     }
 9     if (params) {
10         startTime = params.match(/(^tm1|&tm1)=([^&#]*)/i) ? decodeURIComponent(params.match(/(^tm1|&tm1)=([^&#]*)/i)[2].replace(/\+/g, "%20")) : null;
11         endTime = params.match(/(^tm2|&tm2)=([^&#]*)/i) ? decodeURIComponent(params.match(/(^tm2|&tm2)=([^&#]*)/i)[2].replace(/\+/g, "%20")) : null;
12         if (startTime && endTime) {
13             startTime = startTime.replace(/\-/g, "/");
14             endTime = endTime.replace(/\-/g, "/");
15             if (new Date(startTime).getTime() > new Date(endTime).getTime()) {
16                 jqXHR.abort();
17                 alert("开始时间不能大于结束时间");
18             }
19         }
20     }
21 });

通过正则匹配的方式,获得开始时间tm1和结束时间tm2,replace(/\-/g, "/")是将"2015-08-02"这种格式的时间转换为"2015/08/02",不然的话,在ie等浏览器下,不能正确的转换为Date对象。

 

转载于:https://www.cnblogs.com/clumiere/p/4696206.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值