From fa2d66363928ec6f6b615b9e5e5d9ab002651457 Mon Sep 17 00:00:00 2001 From: John Resig Date: Sun, 19 Jul 2009 19:03:18 +0000 Subject: [PATCH] Did some cleaning up of ajax.js and fixed a bug from commit [6457]. --- src/ajax.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/ajax.js b/src/ajax.js index fe272e7..35bb008 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -177,20 +177,23 @@ jQuery.extend({ // checked again later (in the test suite, specifically) s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s)); - var jsonp, jsre = /=\?(&|$)/g, status, data, + var jsonp, jsre = /=\?(&|$)/, status, data, type = s.type.toUpperCase(); // convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) + if ( s.data && s.processData && typeof s.data !== "string" ) { s.data = jQuery.param(s.data); + } // Handle JSONP Parameter Callbacks if ( s.dataType == "jsonp" ) { if ( type == "GET" ) { - if ( !jsre.test( s.url ) ) + if ( !jsre.test( s.url ) ) { s.url += (/\?/.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?"; - } else if ( !s.data || !jsre.test(s.data) ) + } + } else if ( !s.data || !jsre.test(s.data) ) { s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?"; + } s.dataType = "json"; } @@ -199,8 +202,10 @@ jQuery.extend({ jsonp = "jsonp" + jsc++; // Replace the =? sequence both in the query string and the data - if ( s.data ) + if ( s.data ) { s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1"); + } + s.url = s.url.replace(jsre, "=" + jsonp + "$1"); // We need to make sure -- 1.7.10.4