aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Truyman <bentruyman@gmail.com>2012-10-16 11:37:15 -0400
committerRick Waldron <waldron.rick@gmail.com>2012-10-16 11:37:15 -0400
commitce5784a480ee6dc355fc961ab8bcd5828dabcbb6 (patch)
tree0ebf73c24d1e2736811b0f39b114fc1b8b1d8823
parentfcaef889682d6724f7b8e662c66a7539a95ae3d8 (diff)
downloadjquery-ce5784a480ee6dc355fc961ab8bcd5828dabcbb6.tar.gz
jquery-ce5784a480ee6dc355fc961ab8bcd5828dabcbb6.zip
Handle a falsy URL in the settings object for jQuery.ajax. Fixes #10093, Closes gh-979
-rw-r--r--src/ajax.js4
-rw-r--r--test/unit/ajax.js38
2 files changed, 39 insertions, 3 deletions
diff --git a/src/ajax.js b/src/ajax.js
index 394c84e66..3f71f8c6e 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -247,6 +247,7 @@ jQuery.extend({
target = jQuery.ajaxSettings;
}
ajaxExtend( target, settings );
+
return target;
},
@@ -557,8 +558,9 @@ jQuery.extend({
// Remove hash character (#7531: and string promotion)
// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
// We also use the url parameter if available
- s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+ s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
// Extract dataTypes list
s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace );
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index d11cb13f7..4a93c65fe 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -1451,7 +1451,7 @@ if ( jQuery.ajax && ( !isLocal || hasPHP ) ) {
jQuery.each( [ "Same Domain", "Cross Domain" ], function( crossDomain, label ) {
-
+
asyncTest( "jQuery.ajax() - JSONP, Query String (?n)" + label, function() {
expect( 4 );
@@ -1543,7 +1543,7 @@ if ( jQuery.ajax && ( !isLocal || hasPHP ) ) {
plus();
}
});
-
+
window["jsonpResults"] = function( data ) {
ok( data["data"], "JSON results returned (GET, custom callback function)" );
window["jsonpResults"] = undefined;
@@ -2725,4 +2725,38 @@ if ( jQuery.ajax && ( !isLocal || hasPHP ) ) {
expect( 1 );
ok( jQuery.active === 0, "ajax active counter should be zero: " + jQuery.active );
});
+
+ test("jQuery.ajax - falsy url as argument (#10093)", function() {
+ expect( 4 );
+
+ jQuery.ajaxSetup({ timeout: 0 });
+
+ stop();
+
+ jQuery.when(
+ jQuery.ajax("").success(function(){ ok( true, "settings object - empty string" ); }),
+ jQuery.ajax( false ).success(function(){ ok( true, "false" ); }),
+ jQuery.ajax( null ).success(function(){ ok( true, "null" ); }),
+ jQuery.ajax( undefined ).success(function(){ ok( true, "undefined" ); })
+ ).always(function () {
+ start();
+ });
+ });
+
+ test("jQuery.ajax - falsy url in settings object (#10093)", function() {
+ expect( 4 );
+
+ jQuery.ajaxSetup({ timeout: 0 });
+
+ stop();
+
+ jQuery.when(
+ jQuery.ajax({ url: "" }).success(function(){ ok( true, "settings object - empty string" ); }),
+ jQuery.ajax({ url: false }).success(function(){ ok( true, "false" ); }),
+ jQuery.ajax({ url: null }).success(function(){ ok( true, "null" ); }),
+ jQuery.ajax({ url: undefined }).success(function(){ ok( true, "undefined" ); })
+ ).always(function () {
+ start();
+ });
+ });
}