X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fajax%2Fjsonp.js;h=1df5dd42792bbcf8aadedc87e2e596ec20faff28;hb=bcdd4f817378d5c6c95646ef556e0ff4215bcb5f;hp=0af00567c3e37bec7b92beab6acc6d5e82787ff4;hpb=62a1a1a8fa64f92f429a3f5b8ed2e0d1f6fc3d6c;p=jquery.git diff --git a/src/ajax/jsonp.js b/src/ajax/jsonp.js index 0af0056..1df5dd4 100644 --- a/src/ajax/jsonp.js +++ b/src/ajax/jsonp.js @@ -1,7 +1,7 @@ (function( jQuery ) { var jsc = jQuery.now(), - jsre = /\=\?(&|$)/, + jsre = /(\=)(?:\?|%3F)(&|$)|()(?:\?\?|%3F%3F)()/i, rquery_jsonp = /\?/; // Default jsonp settings @@ -10,12 +10,11 @@ jQuery.ajaxSetup({ jsonpCallback: function() { return "jsonp" + jsc++; } -}); // Normalize jsonp queries // 1) put callback parameter in url or data // 2) sneakily ensure transportDataType is always jsonp for jsonp requests -jQuery.ajax.prefilter("json jsonp", function(s, originalSettings) { +}).ajaxPrefilter("json jsonp", function(s, originalSettings) { if ( s.dataTypes[ 0 ] === "jsonp" || originalSettings.jsonp || @@ -25,8 +24,8 @@ jQuery.ajax.prefilter("json jsonp", function(s, originalSettings) { var jsonpCallback = s.jsonpCallback = 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; + url = s.url.replace(jsre, "$1" + jsonpCallback + "$2"), + data = s.url === url && typeof(s.data) === "string" ? s.data.replace(jsre, "$1" + jsonpCallback + "$2") : s.data; if ( url === s.url && data === s.data ) { url += (rquery_jsonp.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback; @@ -38,7 +37,7 @@ jQuery.ajax.prefilter("json jsonp", function(s, originalSettings) { } // Bind transport to jsonp dataType -}).transport("jsonp", function(s) { +}).ajaxTransport("jsonp", function(s) { // Put callback in place var responseContainer,