Application of ajaxPrefilter in jQuery

  • 2021-07-06 10:12:51
  • OfStack

jQuery defines an ajax filter, ajaxPrefilter, through which ajax requests sent through the corresponding ajax function of jQuery can be filtered.

In the project, there is a need to specify the start time and end time to obtain the process line of some values changing with time in this time interval. We can define a general ajaxPrefilter to filter all ajax requests, and when the start time exceeds the end time, we will request the ajax to abort.


$.ajaxPrefilter(function (options, originalOptions, jqXHR) { //tm1 , tm2 Indicates the start time and end time 
  var requestType, params, startTime, endTime;
  requestType = (originalOptions.type || "").toUpperCase(); //jsonp At the time of type For undefined
  if (requestType === "GET") {
    params = originalOptions.data ? $.param(originalOptions.data) : originalOptions.url;
  } else if (requestType === "POST") {
    params = $.param(originalOptions.data);
  }
  if (params) {
    startTime = params.match(/(^tm1|&tm1)=([^&#]*)/i) ? decodeURIComponent(params.match(/(^tm1|&tm1)=([^&#]*)/i)[2].replace(/\+/g, "%20")) : null;
    endTime = params.match(/(^tm2|&tm2)=([^&#]*)/i) ? decodeURIComponent(params.match(/(^tm2|&tm2)=([^&#]*)/i)[2].replace(/\+/g, "%20")) : null;
    if (startTime && endTime) {
      startTime = startTime.replace(/\-/g, "/");
      endTime = endTime.replace(/\-/g, "/");
      if (new Date(startTime).getTime() > new Date(endTime).getTime()) {
        jqXHR.abort();
        alert(" Start time cannot be greater than end time ");
      }
    }
  }
});

Related articles: