當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JQuery jQuery.ajaxPrefilter()用法及代碼示例


用法
jQuery.ajaxPrefilter(  [dataTypes ], handler ) => undefined

說明:處理自定義 Ajax 選項或在發送每個請求之前修改現有選項,然後再由$.ajax().

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

    • dataTypes
      類型:String
      包含一個或多個空格分隔的數據類型的可選字符串
    • handler
      類型:Function(PlainObject選項,PlainObject originalOptions,jqXHRjqXHR)
      為未來的 Ajax 請求設置默認值的處理程序。

使用$.ajaxPrefilter() 的典型預過濾器注冊如下所示:

$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
  // Modify options, control originalOptions, store jqXHR, etc
});

其中:

  • options 是請求選項
  • originalOptions 是提供給 $.ajax() 方法的選項,未經修改,因此沒有來自 ajaxSettings 的默認值
  • jqXHR是請求的jqXHR對象

當需要處理自定義選項時,預過濾器非常適合。例如,給定以下代碼,如果自定義 abortOnRetry 選項設置為 true ,對 $.ajax() 的調用將自動中止對同一 URL 的請求:

var currentRequests = {};
 
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
  if ( options.abortOnRetry ) {
    if ( currentRequests[ options.url ] ) {
      currentRequests[ options.url ].abort();
    }
    currentRequests[ options.url ] = jqXHR;
  }
});

預過濾器也可用於修改現有選項。例如,以下代理 cross-domain 通過 https://mydomain.net/proxy/請求:

$.ajaxPrefilter(function( options ) {
  if ( options.crossDomain ) {
    options.url = "https://mydomain.net/proxy/" + encodeURIComponent( options.url );
    options.crossDomain = false;
  }
});

如果提供了可選的dataTypes 參數,則預過濾器將僅應用於具有指定數據類型的請求。例如,以下僅將給定的預過濾器應用於 JSON 和腳本請求:

$.ajaxPrefilter( "json script", function( options, originalOptions, jqXHR ) {
  // Modify options, control originalOptions, store jqXHR, etc
});

$.ajaxPrefilter() 方法還可以通過返回該數據類型將請求重定向到另一個數據類型。例如,如果 URL 具有在自定義 isActuallyScript() 函數中定義的某些特定屬性,則以下將請求設置為 "script":

$.ajaxPrefilter(function( options ) {
  if ( isActuallyScript( options.url ) ) {
    return "script";
  }
});

這不僅可以確保請求被視為"script",而且還可以確保將所有專門附加到腳本 dataType 的預過濾器應用於它。

相關用法


注:本文由純淨天空篩選整理自jquery.com大神的英文原創作品 jQuery.ajaxPrefilter()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。