jQuery.ajaxPrefilter() 的參數options與originalOptions

jQuery.ajaxPrefilter():

jQuery.ajaxPrefilter() 是 jQuery中的Ajax前置過濾器,可以用來前置處理關於Ajax的相關設定(option)

其格式為:

1
2
jQuery.ajaxPrefilter( [dataTypes ], handler(options, originalOptions, jqXHR) )  
    //version added: 1.5
  • dataTypes
    Type: String
    一個可選的字串,包含了一個或多個由空白鍵分開的資料型態。
  • handler(options, originalOptions, jqXHR)
    Type: Function()
    一個處理函式,用來設定往後的Ajax請求的預設值。
  • 傳回值: undefined

handler是個回呼函式,其中的options,originalOptions,單看jQuery的官方文件其實不太能懂他在寫啥。這裡簡單說一下。

options是接下來的Ajax請求會套用的新設定,可以藉由修改此物件來改變一些設定,譬如url等等,而originalOptions是原本Ajax的設定,但這個設定並不包含預設的值,而只是單單該次Ajax呼叫時作的設定值。

用一個例子來把兩個物件都列印出來看看就很清楚了:

<!doctype html>
<html lang="en">
<head>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<script type="text/javascript">
  
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
 
document.writeln("----------------options-----------------------------------");
document.writeln("<br/>");
  for ( var a in options) //列印options物件
  {
  document.writeln( a+"=" );
  document.writeln(eval("options."+ a));
  document.writeln("<br/>");
  } 
document.writeln("-----------------originalOptions---------------------------");
document.writeln("<br/>");//列印originalOprions
  for ( var a in originalOptions)
  {
  document.writeln( a+"=" );
  document.writeln(eval("originalOptions."+ a));
  document.writeln("<br/>");
  } 
});
 
$.ajaxSetup({ //新增一些設定,會在包含在ajaxPrefilter的option物件中
  myconfigure1: true,
  myconfigure2: false
});
 
var request=$.ajax({//ajax呼叫的設定包含在ajaxPrefilter的orignalOprion物件中
  type: "POST",
  url: "test.html",
  dataType: "html"
});
</script>
</body>
</html>

輸出:

----------------options-----------------------------------
url= test.html
type= POST
isLocal= true
global= true
processData= true
async= true
contentType= application/x-www-form-urlencoded; charset=UTF-8
accepts= [object Object]
contents= [object Object]
responseFields= [object Object]
converters= [object Object]
flatOptions= [object Object]
jsonp= callback
jsonpCallback= function() { var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) ); this[ callback ] = true; return callback; }
xhr= function() { return !this.isLocal && createStandardXHR() || createActiveXHR(); }
myconfigure1= true
myconfigure2= false
dataType= html
dataTypes= html
crossDomain= false
-----------------riginalOptions----------------------------
type= POST
url= test.html
dataType= html

 
 

  按個讚!~支持本站!~

FB推薦載入中