Skip to content

Commit

Permalink
Handle a falsy URL in the settings object for jQuery.ajax. Fixes #100…
Browse files Browse the repository at this point in the history
…93, Closes gh-979
  • Loading branch information
bentruyman authored and rwaldron committed Oct 16, 2012
1 parent fcaef88 commit ce5784a
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 3 deletions.
4 changes: 3 additions & 1 deletion src/ajax.js
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@ jQuery.extend({
target = jQuery.ajaxSettings;
}
ajaxExtend( target, settings );

return target;
},

Expand Down Expand Up @@ -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 );
Expand Down
38 changes: 36 additions & 2 deletions test/unit/ajax.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 );

Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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();
});
});
}

0 comments on commit ce5784a

Please sign in to comment.