X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Ftransports%2Fjsonp.js;h=5cfb7834af507a37e29f5ecf98617499ebb7e888;hb=e56de77df90e50b9999a02e57241b1cf498b0fe4;hp=aa30b5dda93ab44d8f15bf68850fcdd4c450f154;hpb=ae6655bcb6d852b79df2ddc5545832c5d08936f4;p=jquery.git diff --git a/src/transports/jsonp.js b/src/transports/jsonp.js index aa30b5d..5cfb783 100644 --- a/src/transports/jsonp.js +++ b/src/transports/jsonp.js @@ -15,11 +15,11 @@ jQuery.ajaxSettings.jsonpCallback = function() { // 3) ensure options jsonp is always provided so that jsonp requests are always // json request with the jsonp option set jQuery.ajax.prefilter("json jsonp", function(s) { - + var transportDataType = s.dataTypes[ 0 ]; - + s.dataTypes[ 0 ] = "json"; - + if ( s.jsonp || transportDataType === "jsonp" || transportDataType === "json" && ( jsre.test(s.url) || typeof(s.data) === "string" && jsre.test(s.data) ) ) { @@ -29,34 +29,34 @@ jQuery.ajax.prefilter("json jsonp", function(s) { jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback, url = s.url.replace(jsre, "=" + jsonpCallback + "$1"), data = s.url == url && typeof(s.data) === "string" ? s.data.replace(jsre, "=" + jsonpCallback + "$1") : s.data; - + if ( url == s.url && data == s.data ) { url = url += (rquery_jsonp.test( url ) ? "&" : "?") + jsonp + "=" + jsonpCallback; } - + s.url = url; s.data = data; } - + // Bind transport to json dataType }).transport("json", function(s) { if ( s.jsonp ) { - + // Put callback in place var responseContainer, jsonpCallback = s.jsonpCallback, previous = window[ jsonpCallback ]; - + window [ jsonpCallback ] = function( response ) { responseContainer = [response]; }; - + s.complete = [function() { // Set callback back to previous value window[ jsonpCallback ] = previous; - + // Call if it was a function and we have a response if ( previous) { if ( responseContainer && jQuery.isFunction ( previous ) ) { @@ -66,9 +66,9 @@ jQuery.ajax.prefilter("json jsonp", function(s) { // else, more memory leak avoidance try{ delete window[ jsonpCallback ]; } catch(e){} } - + }, s.complete ]; - + // Use data converter to retrieve json after script execution s.converters["script json"] = function() { if ( ! responseContainer ) { @@ -76,7 +76,7 @@ jQuery.ajax.prefilter("json jsonp", function(s) { } return responseContainer[ 0 ]; }; - + // Delegate to script transport return "script"; }