Blame view

bower_components/jquery/src/ajax/jsonp.js 2.65 KB
a1a3bc73   Luigi Serra   graphs updates
1
  define( [
74249687   Luigi Serra   Cross browser con...
2
3
4
5
6
7
8
9
10
11
  	"../core",
  	"./var/nonce",
  	"./var/rquery",
  	"../ajax"
  ], function( jQuery, nonce, rquery ) {
  
  var oldCallbacks = [],
  	rjsonp = /(=)\?(?=&|$)|\?\?/;
  
  // Default jsonp settings
a1a3bc73   Luigi Serra   graphs updates
12
  jQuery.ajaxSetup( {
74249687   Luigi Serra   Cross browser con...
13
14
15
16
17
18
  	jsonp: "callback",
  	jsonpCallback: function() {
  		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
  		this[ callback ] = true;
  		return callback;
  	}
a1a3bc73   Luigi Serra   graphs updates
19
  } );
74249687   Luigi Serra   Cross browser con...
20
21
22
23
24
25
26
  
  // Detect, normalize options and install callbacks for jsonp requests
  jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
  
  	var callbackName, overwritten, responseContainer,
  		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
  			"url" :
a1a3bc73   Luigi Serra   graphs updates
27
28
29
30
  			typeof s.data === "string" &&
  				( s.contentType || "" )
  					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
  				rjsonp.test( s.data ) && "data"
74249687   Luigi Serra   Cross browser con...
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  		);
  
  	// Handle iff the expected data type is "jsonp" or we have a parameter to set
  	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
  
  		// Get callback name, remembering preexisting value associated with it
  		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
  			s.jsonpCallback() :
  			s.jsonpCallback;
  
  		// Insert callback into url or form data
  		if ( jsonProp ) {
  			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
  		} else if ( s.jsonp !== false ) {
  			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
  		}
  
  		// Use data converter to retrieve json after script execution
a1a3bc73   Luigi Serra   graphs updates
49
  		s.converters[ "script json" ] = function() {
74249687   Luigi Serra   Cross browser con...
50
51
52
53
54
55
  			if ( !responseContainer ) {
  				jQuery.error( callbackName + " was not called" );
  			}
  			return responseContainer[ 0 ];
  		};
  
a1a3bc73   Luigi Serra   graphs updates
56
  		// Force json dataType
74249687   Luigi Serra   Cross browser con...
57
58
59
60
61
62
63
64
65
  		s.dataTypes[ 0 ] = "json";
  
  		// Install callback
  		overwritten = window[ callbackName ];
  		window[ callbackName ] = function() {
  			responseContainer = arguments;
  		};
  
  		// Clean-up function (fires after converters)
a1a3bc73   Luigi Serra   graphs updates
66
67
68
69
70
71
72
73
74
75
  		jqXHR.always( function() {
  
  			// If previous value didn't exist - remove it
  			if ( overwritten === undefined ) {
  				jQuery( window ).removeProp( callbackName );
  
  			// Otherwise restore preexisting value
  			} else {
  				window[ callbackName ] = overwritten;
  			}
74249687   Luigi Serra   Cross browser con...
76
77
78
  
  			// Save back as free
  			if ( s[ callbackName ] ) {
a1a3bc73   Luigi Serra   graphs updates
79
80
  
  				// Make sure that re-using the options doesn't screw things around
74249687   Luigi Serra   Cross browser con...
81
82
  				s.jsonpCallback = originalSettings.jsonpCallback;
  
a1a3bc73   Luigi Serra   graphs updates
83
  				// Save the callback name for future use
74249687   Luigi Serra   Cross browser con...
84
85
86
87
88
89
90
91
92
  				oldCallbacks.push( callbackName );
  			}
  
  			// Call if it was a function and we have a response
  			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
  				overwritten( responseContainer[ 0 ] );
  			}
  
  			responseContainer = overwritten = undefined;
a1a3bc73   Luigi Serra   graphs updates
93
  		} );
74249687   Luigi Serra   Cross browser con...
94
95
96
97
  
  		// Delegate to script
  		return "script";
  	}
a1a3bc73   Luigi Serra   graphs updates
98
  } );
74249687   Luigi Serra   Cross browser con...
99
  
a1a3bc73   Luigi Serra   graphs updates
100
  } );