jQuery中ajaxPrefilter的應用


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對象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM