@@ -203,11 +203,10 @@ jQuery.extend({
203203	etag : { } , 
204204
205205	ajax : function (  origSettings  )  { 
206- 		var  s  =  jQuery . extend ( true ,  { } ,  jQuery . ajaxSettings ,  origSettings ) ; 
207- 		
208- 		var  jsonp ,  status ,  data , 
209- 			callbackContext  =  origSettings  &&  origSettings . context  ||  s , 
210- 			type  =  s . type . toUpperCase ( ) ; 
206+ 		var  s  =  jQuery . extend ( true ,  { } ,  jQuery . ajaxSettings ,  origSettings ) , 
207+ 			jsonp ,  status ,  data ,  type  =  s . type . toUpperCase ( ) ; 
208+ 
209+ 		s . context  =  origSettings  &&  origSettings . context  ||  s ; 
211210
212211		// convert data if not already a string 
213212		if  (  s . data  &&  s . processData  &&  typeof  s . data  !==  "string"  )  { 
@@ -244,14 +243,14 @@ jQuery.extend({
244243			// Handle JSONP-style loading 
245244			window [  jsonp  ]  =  window [  jsonp  ]  ||  function (  tmp  )  { 
246245				data  =  tmp ; 
247- 				success ( ) ; 
248- 				complete ( ) ; 
246+ 				jQuery . ajax . handleSuccess (   s ,   xhr ,   status ,   data   ) ; 
247+ 				jQuery . ajax . handleComplete (   s ,   xhr ,   status ,   data   ) ; 
249248				// Garbage collect 
250249				window [  jsonp  ]  =  undefined ; 
251250
252251				try  { 
253252					delete  window [  jsonp  ] ; 
254- 				}  catch ( e )  { } 
253+ 				}  catch (   jsonpError   )  { } 
255254
256255				if  (  head  )  { 
257256					head . removeChild (  script  ) ; 
@@ -279,7 +278,7 @@ jQuery.extend({
279278		} 
280279
281280		// Watch for a new set of requests 
282- 		if  (  s . global  &&  jQuery . active ++  ===  0  )  { 
281+ 		if  (  s . global  &&  jQuery . ajax . active ++  ===  0  )  { 
283282			jQuery . event . trigger (  "ajaxStart"  ) ; 
284283		} 
285284
@@ -306,8 +305,8 @@ jQuery.extend({
306305					if  (  ! done  &&  ( ! this . readyState  || 
307306							this . readyState  ===  "loaded"  ||  this . readyState  ===  "complete" )  )  { 
308307						done  =  true ; 
309- 						success ( ) ; 
310- 						complete ( ) ; 
308+ 						jQuery . ajax . handleSuccess (   s ,   xhr ,   status ,   data   ) ; 
309+ 						jQuery . ajax . handleComplete (   s ,   xhr ,   status ,   data   ) ; 
311310
312311						// Handle memory leak in IE 
313312						script . onload  =  script . onreadystatechange  =  null ; 
@@ -371,12 +370,12 @@ jQuery.extend({
371370			xhr . setRequestHeader ( "Accept" ,  s . dataType  &&  s . accepts [  s . dataType  ]  ?
372371				s . accepts [  s . dataType  ]  +  ", */*"  :
373372				s . accepts . _default  ) ; 
374- 		}  catch ( e )  { } 
373+ 		}  catch (   headerError   )  { } 
375374
376375		// Allow custom headers/mimetypes and early abort 
377- 		if  (  s . beforeSend  &&  s . beforeSend . call ( callbackContext ,  xhr ,  s )  ===  false  )  { 
376+ 		if  (  s . beforeSend  &&  s . beforeSend . call ( s . context ,  xhr ,  s )  ===  false  )  { 
378377			// Handle the global AJAX counter 
379- 			if  (  s . global  &&  !   -- jQuery . active  )  { 
378+ 			if  (  s . global  &&  jQuery . ajax . active --   ===   1  )  { 
380379				jQuery . event . trigger (  "ajaxStop"  ) ; 
381380			} 
382381
@@ -386,7 +385,7 @@ jQuery.extend({
386385		} 
387386
388387		if  (  s . global  )  { 
389- 			contextTrigger ( "ajaxSend" ,  [ xhr ,  s ] ) ; 
388+ 			jQuery . ajax . triggerGlobal (   s ,   "ajaxSend" ,  [ xhr ,  s ]   ) ; 
390389		} 
391390
392391		// Wait for a response to come back 
@@ -396,7 +395,7 @@ jQuery.extend({
396395				// Opera doesn't call onreadystatechange before this point 
397396				// so we simulate the call 
398397				if  (  ! requestDone  )  { 
399- 					complete ( ) ; 
398+ 					jQuery . ajax . handleComplete (   s ,   xhr ,   status ,   data   ) ; 
400399				} 
401400
402401				requestDone  =  true ; 
@@ -411,9 +410,9 @@ jQuery.extend({
411410
412411				status  =  isTimeout  ===  "timeout"  ?
413412					"timeout"  :
414- 					! jQuery . httpSuccess (  xhr  )  ?
413+ 					! jQuery . ajax . httpSuccess (  xhr  )  ?
415414						"error"  :
416- 						s . ifModified  &&  jQuery . httpNotModified (  xhr ,  s . url  )  ?
415+ 						s . ifModified  &&  jQuery . ajax . httpNotModified (  xhr ,  s . url  )  ?
417416							"notmodified"  :
418417							"success" ; 
419418
@@ -423,25 +422,25 @@ jQuery.extend({
423422					// Watch for, and catch, XML document parse errors 
424423					try  { 
425424						// process the data (runs the xml through httpData regardless of callback) 
426- 						data  =  jQuery . httpData (  xhr ,  s . dataType ,  s  ) ; 
427- 					}  catch ( err )  { 
425+ 						data  =  jQuery . ajax . httpData (  xhr ,  s . dataType ,  s  ) ; 
426+ 					}  catch (   parserError   )  { 
428427						status  =  "parsererror" ; 
429- 						errMsg  =  err ; 
428+ 						errMsg  =  parserError ; 
430429					} 
431430				} 
432431
433432				// Make sure that the request was successful or notmodified 
434433				if  (  status  ===  "success"  ||  status  ===  "notmodified"  )  { 
435434					// JSONP handles its own success callback 
436435					if  (  ! jsonp  )  { 
437- 						success ( ) ; 
436+ 						jQuery . ajax . handleSuccess (   s ,   xhr ,   status ,   data   ) ; 
438437					} 
439438				}  else  { 
440- 					jQuery . handleError ( s ,  xhr ,  status ,  errMsg ) ; 
439+ 					jQuery . ajax . handleError (   s ,  xhr ,  status ,  errMsg   ) ; 
441440				} 
442441
443442				// Fire the complete handlers 
444- 				complete ( ) ; 
443+ 				jQuery . ajax . handleComplete (   s ,   xhr ,   status ,   data   ) ; 
445444
446445				if  (  isTimeout  ===  "timeout"  )  { 
447446					xhr . abort ( ) ; 
@@ -465,7 +464,7 @@ jQuery.extend({
465464
466465				onreadystatechange (  "abort"  ) ; 
467466			} ; 
468- 		}  catch ( e )  {   } 
467+ 		}  catch (   abortError   )  { } 
469468
470469		// Timeout checker 
471470		if  (  s . async  &&  s . timeout  >  0  )  { 
@@ -480,68 +479,138 @@ jQuery.extend({
480479		// Send the data 
481480		try  { 
482481			xhr . send (  type  ===  "POST"  ||  type  ===  "PUT"  ||  type  ===  "DELETE"  ? s . data  : null  ) ; 
483- 		}  catch ( e )  { 
484- 			jQuery . handleError ( s ,  xhr ,  null ,  e ) ; 
482+ 
483+ 		}  catch (  sendError  )  { 
484+ 			jQuery . ajax . handleError (  s ,  xhr ,  null ,  e  ) ; 
485+ 
485486			// Fire the complete handlers 
486- 			complete ( ) ; 
487+ 			jQuery . ajax . handleComplete (   s ,   xhr ,   status ,   data   ) ; 
487488		} 
488489
489490		// firefox 1.5 doesn't fire statechange for sync requests 
490491		if  (  ! s . async  )  { 
491492			onreadystatechange ( ) ; 
492493		} 
493494
494- 		function  success ( )  { 
495- 			// If a local callback was specified, fire it and pass it the data 
496- 			if  (  s . success  )  { 
497- 				s . success . call (  callbackContext ,  data ,  status ,  xhr  ) ; 
498- 			} 
495+ 		// return XMLHttpRequest to allow aborting the request etc. 
496+ 		return  xhr ; 
497+ 	} , 
499498
500- 			// Fire the global callback 
501- 			if  (  s . global  )  { 
502- 				contextTrigger (  "ajaxSuccess" ,  [ xhr ,  s ]  ) ; 
499+ 	// Serialize an array of form elements or a set of 
500+ 	// key/values into a query string 
501+ 	param : function (  a ,  traditional  )  { 
502+ 		var  s  =  [ ] ,  add  =  function (  key ,  value  )  { 
503+ 			// If value is a function, invoke it and return its value 
504+ 			value  =  jQuery . isFunction ( value )  ? value ( )  : value ; 
505+ 			s [  s . length  ]  =  encodeURIComponent ( key )  +  "="  +  encodeURIComponent ( value ) ; 
506+ 		} ; 
507+ 		
508+ 		// Set traditional to true for jQuery <= 1.3.2 behavior. 
509+ 		if  (  traditional  ===  undefined  )  { 
510+ 			traditional  =  jQuery . ajaxSettings . traditional ; 
511+ 		} 
512+ 		
513+ 		// If an array was passed in, assume that it is an array of form elements. 
514+ 		if  (  jQuery . isArray ( a )  ||  a . jquery  )  { 
515+ 			// Serialize the form elements 
516+ 			jQuery . each (  a ,  function ( )  { 
517+ 				add (  this . name ,  this . value  ) ; 
518+ 			} ) ; 
519+ 			
520+ 		}  else  { 
521+ 			// If traditional, encode the "old" way (the way 1.3.2 or older 
522+ 			// did it), otherwise encode params recursively. 
523+ 			for  (  var  prefix  in  a  )  { 
524+ 				buildParams (  prefix ,  a [ prefix ] ,  traditional ,  add  ) ; 
503525			} 
504526		} 
505527
506- 		function  complete ( )  { 
507- 			// Process result 
508- 			if  (  s . complete  )  { 
509- 				s . complete . call (  callbackContext ,  xhr ,  status ) ; 
510- 			} 
528+ 		// Return the resulting serialization 
529+ 		return  s . join ( "&" ) . replace ( r20 ,  "+" ) ; 
530+ 	} 
531+ } ) ; 
511532
512- 			// The request was completed 
513- 			if  (  s . global  )  { 
514- 				contextTrigger (  "ajaxComplete" ,  [ xhr ,  s ]  ) ; 
515- 			} 
533+ function  buildParams (  prefix ,  obj ,  traditional ,  add  )  { 
534+ 	if  (  jQuery . isArray ( obj )  )  { 
535+ 		// Serialize array item. 
536+ 		jQuery . each (  obj ,  function (  i ,  v  )  { 
537+ 			if  (  traditional  ||  / \[ \] $ / . test (  prefix  )  )  { 
538+ 				// Treat each array item as a scalar. 
539+ 				add (  prefix ,  v  ) ; 
516540
517- 			// Handle the global AJAX counter 
518- 			if  (  s . global  &&  !  -- jQuery . active  )  { 
519- 				jQuery . event . trigger (  "ajaxStop"  ) ; 
541+ 			}  else  { 
542+ 				// If array item is non-scalar (array or object), encode its 
543+ 				// numeric index to resolve deserialization ambiguity issues. 
544+ 				// Note that rack (as of 1.0.0) can't currently deserialize 
545+ 				// nested arrays properly, and attempting to do so may cause 
546+ 				// a server error. Possible fixes are to modify rack's 
547+ 				// deserialization algorithm or to provide an option or flag 
548+ 				// to force array serialization to be shallow. 
549+ 				buildParams (  prefix  +  "["  +  (  typeof  v  ===  "object"  ||  jQuery . isArray ( v )  ? i  : ""  )  +  "]" ,  v ,  traditional ,  add  ) ; 
520550			} 
521- 		} 
522- 		
523- 		function  contextTrigger ( type ,  args )  { 
524- 			( s . context  ? jQuery ( s . context )  : jQuery . event ) . trigger ( type ,  args ) ; 
525- 		} 
551+ 		} ) ; 
552+ 			
553+ 	}  else  if  (  ! traditional  &&  obj  !=  null  &&  typeof  obj  ===  "object"  )  { 
554+ 		// Serialize object item. 
555+ 		jQuery . each (  obj ,  function (  k ,  v  )  { 
556+ 			buildParams (  prefix  +  "["  +  k  +  "]" ,  v ,  traditional ,  add  ) ; 
557+ 		} ) ; 
558+ 					
559+ 	}  else  { 
560+ 		// Serialize scalar item. 
561+ 		add (  prefix ,  obj  ) ; 
562+ 	} 
563+ } 
526564
527- 		// return XMLHttpRequest to allow aborting the request etc. 
528- 		return  xhr ; 
529- 	} , 
565+ jQuery . extend (  jQuery . ajax ,  { 
566+ 
567+ 	// Counter for holding the number of active queries 
568+ 	active : 0 , 
530569
531570	handleError : function (  s ,  xhr ,  status ,  e  )  { 
532571		// If a local callback was specified, fire it 
533572		if  (  s . error  )  { 
534- 			s . error . call (  s . context   ||   s ,  xhr ,  status ,  e  ) ; 
573+ 			s . error . call (  s . context ,  xhr ,  status ,  e  ) ; 
535574		} 
536575
537576		// Fire the global callback 
538577		if  (  s . global  )  { 
539- 			( s . context  ?  jQuery ( s . context )  :  jQuery . event ) . trigger (  "ajaxError" ,  [ xhr ,  s ,  e ]  ) ; 
578+ 			jQuery . ajax . triggerGlobal (   s ,  "ajaxError" ,  [ xhr ,  s ,  e ]  ) ; 
540579		} 
541580	} , 
542581
543- 	// Counter for holding the number of active queries 
544- 	active : 0 , 
582+ 	handleSuccess : function (  s ,  xhr ,  status ,  data  )  { 
583+ 		// If a local callback was specified, fire it and pass it the data 
584+ 		if  (  s . success  )  { 
585+ 			s . success . call (  s . context ,  data ,  status ,  xhr  ) ; 
586+ 		} 
587+ 
588+ 		// Fire the global callback 
589+ 		if  (  s . global  )  { 
590+ 			jQuery . ajax . triggerGlobal (  s ,  "ajaxSuccess" ,  [ xhr ,  s ]  ) ; 
591+ 		} 
592+ 	} , 
593+ 
594+ 	handleComplete : function (  s ,  xhr ,  status  )  { 
595+ 		// Process result 
596+ 		if  (  s . complete  )  { 
597+ 			s . complete . call (  s . context ,  xhr ,  status  ) ; 
598+ 		} 
599+ 
600+ 		// The request was completed 
601+ 		if  (  s . global  )  { 
602+ 			jQuery . ajax . triggerGlobal (  s ,  "ajaxComplete" ,  [ xhr ,  s ]  ) ; 
603+ 		} 
604+ 
605+ 		// Handle the global AJAX counter 
606+ 		if  (  s . global  &&  jQuery . ajax . active --  ===  1  )  { 
607+ 			jQuery . event . trigger (  "ajaxStop"  ) ; 
608+ 		} 
609+ 	} , 
610+ 		
611+ 	triggerGlobal : function (  s ,  type ,  args  )  { 
612+ 		( s . context  &&  s . context . url  ==  null  ? jQuery ( s . context )  : jQuery . event ) . trigger ( type ,  args ) ; 
613+ 	} , 
545614
546615	// Determines if an XMLHttpRequest was successful or not 
547616	httpSuccess : function (  xhr  )  { 
@@ -601,71 +670,6 @@ jQuery.extend({
601670		} 
602671
603672		return  data ; 
604- 	} , 
605- 
606- 	// Serialize an array of form elements or a set of 
607- 	// key/values into a query string 
608- 	param : function (  a ,  traditional  )  { 
609- 		var  s  =  [ ] ; 
610- 		
611- 		// Set traditional to true for jQuery <= 1.3.2 behavior. 
612- 		if  (  traditional  ===  undefined  )  { 
613- 			traditional  =  jQuery . ajaxSettings . traditional ; 
614- 		} 
615- 		
616- 		// If an array was passed in, assume that it is an array of form elements. 
617- 		if  (  jQuery . isArray ( a )  ||  a . jquery  )  { 
618- 			// Serialize the form elements 
619- 			jQuery . each (  a ,  function ( )  { 
620- 				add (  this . name ,  this . value  ) ; 
621- 			} ) ; 
622- 			
623- 		}  else  { 
624- 			// If traditional, encode the "old" way (the way 1.3.2 or older 
625- 			// did it), otherwise encode params recursively. 
626- 			for  (  var  prefix  in  a  )  { 
627- 				buildParams (  prefix ,  a [ prefix ]  ) ; 
628- 			} 
629- 		} 
630- 
631- 		// Return the resulting serialization 
632- 		return  s . join ( "&" ) . replace ( r20 ,  "+" ) ; 
633- 
634- 		function  buildParams (  prefix ,  obj  )  { 
635- 			if  (  jQuery . isArray ( obj )  )  { 
636- 				// Serialize array item. 
637- 				jQuery . each (  obj ,  function (  i ,  v  )  { 
638- 					if  (  traditional  ||  / \[ \] $ / . test (  prefix  )  )  { 
639- 						// Treat each array item as a scalar. 
640- 						add (  prefix ,  v  ) ; 
641- 					}  else  { 
642- 						// If array item is non-scalar (array or object), encode its 
643- 						// numeric index to resolve deserialization ambiguity issues. 
644- 						// Note that rack (as of 1.0.0) can't currently deserialize 
645- 						// nested arrays properly, and attempting to do so may cause 
646- 						// a server error. Possible fixes are to modify rack's 
647- 						// deserialization algorithm or to provide an option or flag 
648- 						// to force array serialization to be shallow. 
649- 						buildParams (  prefix  +  "["  +  (  typeof  v  ===  "object"  ||  jQuery . isArray ( v )  ? i  : ""  )  +  "]" ,  v  ) ; 
650- 					} 
651- 				} ) ; 
652- 					
653- 			}  else  if  (  ! traditional  &&  obj  !=  null  &&  typeof  obj  ===  "object"  )  { 
654- 				// Serialize object item. 
655- 				jQuery . each (  obj ,  function (  k ,  v  )  { 
656- 					buildParams (  prefix  +  "["  +  k  +  "]" ,  v  ) ; 
657- 				} ) ; 
658- 					
659- 			}  else  { 
660- 				// Serialize scalar item. 
661- 				add (  prefix ,  obj  ) ; 
662- 			} 
663- 		} 
664- 
665- 		function  add (  key ,  value  )  { 
666- 			// If value is a function, invoke it and return its value 
667- 			value  =  jQuery . isFunction ( value )  ? value ( )  : value ; 
668- 			s [  s . length  ]  =  encodeURIComponent ( key )  +  "="  +  encodeURIComponent ( value ) ; 
669- 		} 
670673	} 
674+ 
671675} ) ; 
0 commit comments