Fixes #7229 and #5803
[jquery.git] / src / ajax.js
index d06bbab..915bbaa 100644 (file)
@@ -208,6 +208,12 @@ jQuery.extend({
                        s.data = jQuery.param( s.data, s.traditional );
                }
 
+               // If the jsonpCallback has been set, we can assume that dataType is jsonp
+               // Ticket #5803
+               if ( s.jsonpCallback ) {
+                 s.dataType = "jsonp";
+               }
+
                // Handle JSONP Parameter Callbacks
                if ( s.dataType === "jsonp" ) {
                        if ( type === "GET" ) {
@@ -239,10 +245,6 @@ jQuery.extend({
                        var customJsonp = window[ jsonp ];
 
                        window[ jsonp ] = function( tmp ) {
-                               data = tmp;
-                               jQuery.handleSuccess( s, xhr, status, data );
-                               jQuery.handleComplete( s, xhr, status, data );
-                               
                                if ( jQuery.isFunction( customJsonp ) ) {
                                        customJsonp( tmp );
 
@@ -254,6 +256,10 @@ jQuery.extend({
                                                delete window[ jsonp ];
                                        } catch( jsonpError ) {}
                                }
+
+                               data = tmp;
+                               jQuery.handleSuccess( s, xhr, status, data );
+                               jQuery.handleComplete( s, xhr, status, data );
                                
                                if ( head ) {
                                        head.removeChild( script );