s.dataType = "script";
// Handle JSONP-style loading
- window[ jsonp ] = window[ jsonp ] || function( tmp ) {
+ var customJsonp = window[ jsonp ];
+
+ window[ jsonp ] = function( tmp ) {
data = tmp;
jQuery.ajax.handleSuccess( s, xhr, status, data );
jQuery.ajax.handleComplete( s, xhr, status, data );
- // Garbage collect
- window[ jsonp ] = undefined;
+
+ if ( jQuery.isFunction( customJsonp ) ) {
+ customJsonp( tmp );
- try {
- delete window[ jsonp ];
- } catch( jsonpError ) {}
+ } else {
+ // Garbage collect
+ window[ jsonp ] = undefined;
+ try {
+ delete window[ jsonp ];
+ } catch( jsonpError ) {}
+ }
+
if ( head ) {
head.removeChild( script );
}
}
// Fire the complete handlers
- jQuery.ajax.handleComplete( s, xhr, status, data );
+ if ( !jsonp ) {
+ jQuery.ajax.handleComplete( s, xhr, status, data );
+ }
if ( isTimeout === "timeout" ) {
xhr.abort();
// Send the data
try {
- xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
+ xhr.send( (type !== "GET" && s.data) || null );
} catch( sendError ) {
jQuery.ajax.handleError( s, xhr, null, e );